fixing bug 81292 - RFE: Labels feature to help users organize their messages. r=sspitzer, sr=beinvenu

This commit is contained in:
ssu%netscape.com 2001-12-07 21:37:22 +00:00
Родитель 9721eab3d0
Коммит 3f515758a8
30 изменённых файлов: 2618 добавлений и 42 удалений

Просмотреть файл

@ -73,3 +73,5 @@ mailPrefsOverlay.xul
am-prefs.js
am-offline.xul
am-offline.js
pref-labels.xul
pref-labels.js

Просмотреть файл

@ -70,6 +70,11 @@
<treecell class="treecell-indent" url="chrome://messenger/content/addressbook/pref-addressing.xul" label="&address.label;"/>
</treerow>
</treeitem>
<treeitem>
<treerow>
<treecell class="treecell-indent" url="chrome://messenger/content/pref-labels.xul" label="&labels.label;"/>
</treerow>
</treeitem>
</treechildren>
</treeitem>
</treechildren>

Просмотреть файл

@ -75,6 +75,8 @@ CHROME_CONTENT = \
.\smtpEditOverlay.xul \
.\smtpEditOverlay.js \
.\mailPrefsOverlay.xul \
.\pref-labels.xul\
.\pref-labels.js\
.\am-offline.xul \
.\am-offline.js \
$(NULL)

Просмотреть файл

@ -0,0 +1,102 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corp.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Sean Su <ssu@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
function setColorWell(aPicker)
{
var colorRef;
colorRef = aPicker.nextSibling; // colour value is held here
colorRef.setAttribute( "value", aPicker.color );
}
function getColorFromWellAndSetValue(aPickerId)
{
var picker;
var colorRef;
var color;
picker = document.getElementById(aPickerId);
colorRef = picker.nextSibling;
color = colorRef.getAttribute("value");
picker.color = color;
return color;
}
function Startup()
{
getColorFromWellAndSetValue("labelColorPicker1");
getColorFromWellAndSetValue("labelColorPicker2");
getColorFromWellAndSetValue("labelColorPicker3");
getColorFromWellAndSetValue("labelColorPicker4");
getColorFromWellAndSetValue("labelColorPicker5");
return true;
}
/* Function to restore pref values to application defaults */
function restoreColorAndDescriptionToDefaults()
{
var prefColor;
var description;
var pickerColor;
var dataColor;
var labelDescription;
var prefService = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefService);
var prefs = prefService.getDefaultBranch(null);
/* there are only 5 labels */
for(var i = 1; i <= 5; i++)
{
/* set the default description from prefs */
description = prefs.getComplexValue("mailnews.labels.description." + i,
Components.interfaces.nsIPrefLocalizedString).data;
labelDescription = document.getElementById("label" + i + "TextBox");
labelDescription.value = description;
/* set the default color from prefs */
prefColor = prefs.getCharPref("mailnews.labels.color." + i);
pickerColor = document.getElementById("labelColorPicker" + i);
pickerColor.color = prefColor;
// need to call setColorWell() so that the default pref value will be updated
// in the preferences file.
setColorWell(pickerColor);
}
}

Просмотреть файл

@ -0,0 +1,188 @@
<?xml version="1.0"?>
<!-- ***** BEGIN LICENSE BLOCK *****
- Version: MPL 1.1/GPL 2.0/LGPL 2.1
-
- The contents of this file are subject to the Mozilla Public License Version
- 1.1 (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS" basis,
- WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- for the specific language governing rights and limitations under the
- License.
-
- The Original Code is Mozilla Communicator.
-
- The Initial Developer of the Original Code is
- Netscape Communications Corp.
- Portions created by the Initial Developer are Copyright (C) 2001
- the Initial Developer. All Rights Reserved.
-
- Contributor(s):
- Sean Su <ssu@netscape.com>
-
- Alternatively, the contents of this file may be used under the terms of
- either the GNU General Public License Version 2 or later (the "GPL"), or
- the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- in which case the provisions of the GPL or the LGPL are applicable instead
- of those above. If you wish to allow use of your version of this file only
- under the terms of either the GPL or the LGPL, and not to allow others to
- use your version of this file under the terms of the MPL, indicate your
- decision by deleting the provisions above and replace them with the notice
- and other provisions required by the LGPL or the GPL. If you do not delete
- the provisions above, a recipient may use your version of this file under
- the terms of any one of the MPL, the GPL or the LGPL.
-
- ***** END LICENSE BLOCK ***** -->
<?xml-stylesheet href="chrome://messenger/skin/prefPanels.css" type="text/css"?>
<?xul-overlay href="chrome://global/content/dialogOverlay.xul"?>
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
<!DOCTYPE window SYSTEM "chrome://messenger/locale/pref-labels.dtd">
<window xmlns:html="http://www.w3.org/1999/xhtml"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
class="color-dialog"
onload="parent.initPanel('chrome://messenger/content/pref-labels.xul');"
orient="vertical">
<popupset id="aTooltipSet"/>
<script type="application/x-javascript">
<![CDATA[
var _elementIDs = ["label1TextBox", "label1Color", "label2TextBox", "label2Color", "label3TextBox", "label3Color", "label4TextBox", "label4Color", "label5TextBox", "label5Color"];
]]>
</script>
<script type="application/x-javascript" src="chrome://messenger/content/pref-labels.js"/>
<hbox class="box-smallheader" title="&pane.title;"/>
<description>&displayText.label;</description>
<!-- label color: 1 (default red) -->
<hbox class="indent" autostretch="never">
<textbox
id="label1TextBox"
pref="true"
preftype="localizedstring"
prefstring="mailnews.labels.description.1"
prefattribute="value"/>
<colorpicker
class="small-margin"
type="button"
id="labelColorPicker1"
palettename="standard"
onchange="setColorWell(this);"/>
<data
id="label1Color"
pref="true"
preftype="color"
prefstring="mailnews.labels.color.1"
prefattribute="value"
wsm_attributes="value"/>
</hbox>
<!-- label color: 2 (default orange) -->
<hbox class="indent" autostretch="never">
<textbox
id="label2TextBox"
pref="true"
preftype="localizedstring"
prefstring="mailnews.labels.description.2"
prefattribute="value"/>
<colorpicker
class="small-margin"
type="button"
id="labelColorPicker2"
palettename="standard"
onchange="setColorWell(this);"/>
<data
id="label2Color"
pref="true"
preftype="color"
prefstring="mailnews.labels.color.2"
prefattribute="value"
wsm_attributes="value"/>
</hbox>
<!-- label color: 3 (default green) -->
<hbox class="indent" autostretch="never">
<textbox
id="label3TextBox"
pref="true"
preftype="localizedstring"
prefstring="mailnews.labels.description.3"
prefattribute="value"/>
<colorpicker
class="small-margin"
type="button"
id="labelColorPicker3"
palettename="standard"
onchange="setColorWell(this);"/>
<data
id="label3Color"
pref="true"
preftype="color"
prefstring="mailnews.labels.color.3"
prefattribute="value"
wsm_attributes="value"/>
</hbox>
<!-- label color: 4 (default blue) -->
<hbox class="indent" autostretch="never">
<textbox
id="label4TextBox"
pref="true"
preftype="localizedstring"
prefstring="mailnews.labels.description.4"
prefattribute="value"/>
<colorpicker
class="small-margin"
type="button"
id="labelColorPicker4"
palettename="standard"
onchange="setColorWell(this);"/>
<data
id="label4Color"
pref="true"
preftype="color"
prefstring="mailnews.labels.color.4"
prefattribute="value"
wsm_attributes="value"/>
</hbox>
<!-- label color: 5 (default purple) -->
<hbox class="indent" autostretch="never">
<textbox
id="label5TextBox"
pref="true"
preftype="localizedstring"
prefstring="mailnews.labels.description.5"
prefattribute="value"/>
<colorpicker
class="small-margin"
type="button"
id="labelColorPicker5"
palettename="standard"
onchange="setColorWell(this);"/>
<data
id="label5Color"
pref="true"
preftype="color"
prefstring="mailnews.labels.color.5"
prefattribute="value"
wsm_attributes="value"/>
</hbox>
<hbox pack="end">
<button label="&restoreDefaults.label;" accesskey="&restoreDefaults.accesskey;"
oncommand="restoreColorAndDescriptionToDefaults();">
</button>
</hbox>
</window>

Просмотреть файл

@ -47,3 +47,4 @@ SmtpServerList.dtd
smtpEditOverlay.dtd
mailPrefsOverlay.dtd
am-offline.dtd
pref-labels.dtd

Просмотреть файл

@ -13,3 +13,4 @@
<!ENTITY format.label "Send Format">
<!ENTITY return.label "Return Receipts">
<!ENTITY disk.label "Disk Space">
<!ENTITY labels.label "Labels">

Просмотреть файл

@ -51,6 +51,7 @@ CHROME_L10N = \
.\SmtpServerList.dtd \
.\smtpEditOverlay.dtd \
.\mailPrefsOverlay.dtd \
.\pref-labels.dtd\
.\am-offline.dtd \
$(NULL)

Просмотреть файл

@ -0,0 +1,42 @@
<!-- ***** BEGIN LICENSE BLOCK *****
- Version: MPL 1.1/GPL 2.0/LGPL 2.1
-
- The contents of this file are subject to the Mozilla Public License Version
- 1.1 (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS" basis,
- WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- for the specific language governing rights and limitations under the
- License.
-
- The Original Code is Mozilla Communicator.
-
- The Initial Developer of the Original Code is
- Netscape Communications Corp.
- Portions created by the Initial Developer are Copyright (C) 2001
- the Initial Developer. All Rights Reserved.
-
- Contributor(s):
- Sean Su <ssu@netscape.com>
-
- Alternatively, the contents of this file may be used under the terms of
- either the GNU General Public License Version 2 or later (the "GPL"), or
- the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- in which case the provisions of the GPL or the LGPL are applicable instead
- of those above. If you wish to allow use of your version of this file only
- under the terms of either the GPL or the LGPL, and not to allow others to
- use your version of this file under the terms of the MPL, indicate your
- decision by deleting the provisions above and replace them with the notice
- and other provisions required by the LGPL or the GPL. If you do not delete
- the provisions above, a recipient may use your version of this file under
- the terms of any one of the MPL, the GPL or the LGPL.
-
- ***** END LICENSE BLOCK ***** -->
<!ENTITY pane.title "Labels">
<!ENTITY displayText.label "Customize the names and colors of message labels.">
<!ENTITY restoreDefaults.label "Restore Defaults">
<!ENTITY restoreDefaults.accesskey "R">

Просмотреть файл

@ -185,12 +185,13 @@ interface nsMsgViewCommandType
const nsMsgViewCommandTypeValue selectThread = 18;
const nsMsgViewCommandTypeValue selectFlagged = 19;
const nsMsgViewCommandTypeValue cmdRequiringMsgBody = 20;
const nsMsgViewCommandTypeValue label1 = 21;
const nsMsgViewCommandTypeValue label2 = 22;
const nsMsgViewCommandTypeValue label3 = 23;
const nsMsgViewCommandTypeValue label4 = 24;
const nsMsgViewCommandTypeValue label5 = 25;
const nsMsgViewCommandTypeValue lastLabel = 25;
const nsMsgViewCommandTypeValue label0 = 21;
const nsMsgViewCommandTypeValue label1 = 22;
const nsMsgViewCommandTypeValue label2 = 23;
const nsMsgViewCommandTypeValue label3 = 24;
const nsMsgViewCommandTypeValue label4 = 25;
const nsMsgViewCommandTypeValue label5 = 26;
const nsMsgViewCommandTypeValue lastLabel = 26;
};

Просмотреть файл

@ -248,6 +248,7 @@ var DefaultController =
case "cmd_markAllRead":
case "cmd_markThreadAsRead":
case "cmd_markAsFlagged":
case "cmd_label0":
case "cmd_label1":
case "cmd_label2":
case "cmd_label3":
@ -367,6 +368,7 @@ var DefaultController =
case "cmd_markAsFlagged":
case "button_file":
case "cmd_file":
case "cmd_label0":
case "cmd_label1":
case "cmd_label2":
case "cmd_label3":
@ -618,6 +620,9 @@ var DefaultController =
case "cmd_markAsFlagged":
MsgMarkAsFlagged(null);
return;
case "cmd_label0":
gDBView.doCommand(nsMsgViewCommandType.label0);
return;
case "cmd_label1":
gDBView.doCommand(nsMsgViewCommandType.label1);
return;

Просмотреть файл

@ -301,11 +301,53 @@ function InitMessageMark()
document.commandDispatcher.updateCommands('create-menu-mark');
}
function InitMessageLabel()
function SetMenuItemLabel(menuItemId, customLabel)
{
dump("initing message label\n");
var menuItem = document.getElementById(menuItemId);
if(menuItem)
menuItem.setAttribute('label', customLabel);
}
function InitMessageLabel(menuType)
{
/* this code gets the label strings and changes the menu labels */
var prefs = Components.classes["@mozilla.org/preferences;1"].getService(Components.interfaces.nsIPref);
var prefBranch = prefs.getDefaultBranch(null);
var color;
for (var i = 0;i <= 5; i++)
{
try
{
var prefString = prefs.getComplexValue("mailnews.labels.description." + i,
Components.interfaces.nsIPrefLocalizedString);
var formattedPrefString = gMessengerBundle.getFormattedString("labelMenuItemFormat" + i,
[prefString], 1);
SetMenuItemLabel(menuType + '-labelMenuItem' + i, formattedPrefString);
// commented out for now until UE decides on how to show the Labels menu items.
// This code will color either the text or background for the Labels menu items.
/*****
if (i != 0)
{
color = prefBranch.getCharPref("mailnews.labels.color." + i);
// this colors the text of the menuitem only.
document.getElementById(menuType + "-labelMenuItem" + i).setAttribute("style", ("color: " + color));
// this colors the background of the menuitem and
// when selected, text becomes white.
//document.getElementById(menuType + "-labelMenuItem" + i).setAttribute("style", ("color: #FFFFFF"));
//document.getElementById(menuType + "-labelMenuItem" + i).setAttribute("style", ("background-color: " + color));
}
****/
}
catch(ex)
{
dump("bad! " + ex + "\n");
}
}
document.commandDispatcher.updateCommands('create-menu-label');
/* this code should probably get the label strings and change the menu labels */
}
function InitMarkReadItem(id)

Просмотреть файл

@ -252,6 +252,7 @@ Rights Reserved.
events="create-menu-label"
oncommandupdate="goUpdateMailMenuItems(this)">
<command id="cmd_label0" oncommand="goDoCommand('cmd_label0');" disabled="true"/>
<command id="cmd_label1" oncommand="goDoCommand('cmd_label1');" disabled="true"/>
<command id="cmd_label2" oncommand="goDoCommand('cmd_label2');" disabled="true"/>
<command id="cmd_label3" oncommand="goDoCommand('cmd_label3');" disabled="true"/>
@ -492,6 +493,37 @@ Rights Reserved.
</rule>
</template>
</menu>
<menuseparator/>
<menu label="&labelMenu.label;" accesskey="&labelMenu.accesskey;">
<menupopup id="threadPaneContext-labels" onpopupshowing="InitMessageLabel('threadPaneContext')">
<menuitem
id="threadPaneContext-labelMenuItem0"
accesskey="&labelCmd0.accesskey;"
observes="cmd_label0"/>
<menuseparator/>
<menuitem
id="threadPaneContext-labelMenuItem1"
accesskey="&labelCmd1.accesskey;"
observes="cmd_label1"/>
<menuitem
id="threadPaneContext-labelMenuItem2"
accesskey="&labelCmd2.accesskey;"
observes="cmd_label2"/>
<menuitem
id="threadPaneContext-labelMenuItem3"
accesskey="&labelCmd3.accesskey;"
observes="cmd_label3"/>
<menuitem
id="threadPaneContext-labelMenuItem4"
accesskey="&labelCmd4.accesskey;"
observes="cmd_label4"/>
<menuitem
id="threadPaneContext-labelMenuItem5"
accesskey="&labelCmd5.accesskey;"
observes="cmd_label5"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem id="threadPaneContext-saveAs"
label="&contextSaveAs.label;"
accesskey="&contextSaveAs.accesskey;"
@ -741,6 +773,37 @@ Rights Reserved.
</rule>
</template>
</menu>
<menuseparator/>
<menu label="&labelMenu.label;" accesskey="&labelMenu.accesskey;">
<menupopup id="messagePaneContext-labels" onpopupshowing="InitMessageLabel('messagePaneContext')">
<menuitem
id="messagePaneContext-labelMenuItem0"
accesskey="&labelCmd0.accesskey;"
observes="cmd_label0"/>
<menuseparator/>
<menuitem
id="messagePaneContext-labelMenuItem1"
accesskey="&labelCmd1.accesskey;"
observes="cmd_label1"/>
<menuitem
id="messagePaneContext-labelMenuItem2"
accesskey="&labelCmd2.accesskey;"
observes="cmd_label2"/>
<menuitem
id="messagePaneContext-labelMenuItem3"
accesskey="&labelCmd3.accesskey;"
observes="cmd_label3"/>
<menuitem
id="messagePaneContext-labelMenuItem4"
accesskey="&labelCmd4.accesskey;"
observes="cmd_label4"/>
<menuitem
id="messagePaneContext-labelMenuItem5"
accesskey="&labelCmd5.accesskey;"
observes="cmd_label5"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem id="messagePaneContext-saveAs"
label="&contextSaveAs.label;"
accesskey="&contextSaveAs.accesskey;"
@ -1229,12 +1292,32 @@ Rights Reserved.
</menu>
<menuseparator/>
<menu label="&labelMenu.label;" accesskey="&labelMenu.accesskey;">
<menupopup onpopupshowing="InitMessageLabel()">
<menuitem type="checkbox" id="labelMenuItem1" label="&labelCmd1.label;" accesskey="&labelCmd1.accesskey;" observes="cmd_label1"/>
<menuitem type="checkbox" id="labelMenuItem2" label="&labelCmd2.label;" accesskey="&labelCmd2.accesskey;" observes="cmd_label2"/>
<menuitem type="checkbox" id="labelMenuItem3" label="&labelCmd3.label;" accesskey="&labelCmd3.accesskey;" observes="cmd_label3"/>
<menuitem type="checkbox" id="labelMenuItem4" label="&labelCmd4.label;" accesskey="&labelCmd4.accesskey;" observes="cmd_label4"/>
<menuitem type="checkbox" id="labelMenuItem5" label="&labelCmd5.label;" accesskey="&labelCmd5.accesskey;" observes="cmd_label5"/>
<menupopup id="menuPopup-labels" onpopupshowing="InitMessageLabel('menuPopup')">
<menuitem
id="menuPopup-labelMenuItem0"
accesskey="&labelCmd0.accesskey;"
observes="cmd_label0"/>
<menuseparator/>
<menuitem
id="menuPopup-labelMenuItem1"
accesskey="&labelCmd1.accesskey;"
observes="cmd_label1"/>
<menuitem
id="menuPopup-labelMenuItem2"
accesskey="&labelCmd2.accesskey;"
observes="cmd_label2"/>
<menuitem
id="menuPopup-labelMenuItem3"
accesskey="&labelCmd3.accesskey;"
observes="cmd_label3"/>
<menuitem
id="menuPopup-labelMenuItem4"
accesskey="&labelCmd4.accesskey;"
observes="cmd_label4"/>
<menuitem
id="menuPopup-labelMenuItem5"
accesskey="&labelCmd5.accesskey;"
observes="cmd_label5"/>
</menupopup>
</menu>
<menuseparator/>

Просмотреть файл

@ -21,6 +21,7 @@ Rights Reserved.
-->
<?xml-stylesheet href="chrome://messenger/skin/threadPane.css" type="text/css"?>
<?xml-stylesheet href="chrome://messenger/skin/threadPaneLabels.css" type="text/css"?>
<!DOCTYPE window SYSTEM "chrome://messenger/locale/threadpane.dtd">
@ -48,7 +49,7 @@ Rights Reserved.
<splitter class="tree-splitter"/>
<outlinercol id="priorityCol" class="sortDirectionIndicator" persist="hidden ordinal width" flex="1" label="&priorityColumn.label;"/>
<splitter class="tree-splitter"/>
<outlinercol id="labelCol" class="sortDirectionIndicator" persist="hidden ordinal width" flex="1" label="&labelColumn.label;"/>
<outlinercol id="labelCol" class="sortDirectionIndicator" persist="hidden ordinal width" flex="1" label="&labelColumn.label;" hidden="true"/>
<splitter class="tree-splitter"/>
<outlinercol id="unreadCol" class="sortDirectionIndicator" persist="hidden ordinal width" flex="1" label="&unreadColumn.label;"/>
<splitter class="tree-splitter"/>

Просмотреть файл

@ -144,7 +144,7 @@ Rights Reserved.
<!ENTITY sortByStatusCmd.label "Status">
<!ENTITY sortByStatusCmd.accesskey "u">
<!ENTITY sortByLabelCmd.label "Label">
<!ENTITY sortByLabelCmd.accesskey "l">
<!ENTITY sortByLabelCmd.accesskey "L">
<!ENTITY sortBySubjectCmd.label "Subject">
<!ENTITY sortBySubjectCmd.accesskey "S">
<!-- Sender / Recipient lives in messenger.properties, since that item is dynamic -->
@ -364,7 +364,8 @@ Rights Reserved.
<!ENTITY addAllToAddressBookCmd.label ".Add All to Address Book">
<!ENTITY addAllToAddressBookCmd.accesskey "A">
<!ENTITY labelMenu.label "Label">
<!ENTITY labelMenu.accesskey "l">
<!ENTITY labelMenu.accesskey "L">
<!ENTITY labelCmd0.accesskey "0">
<!ENTITY labelCmd1.label "1">
<!ENTITY labelCmd1.accesskey "1">
<!ENTITY labelCmd2.label "2">

Просмотреть файл

@ -142,6 +142,33 @@ priorityNormal=Normal
priorityHigh=High
priorityHighest=Highest
# defaults for labels prefs listed in mailnews.js
mailnews.labels.description.0=None
mailnews.labels.description.1=Important
mailnews.labels.description.2=Work
mailnews.labels.description.3=Personal
mailnews.labels.description.4=To Do
mailnews.labels.description.5=Later
# Format definition for label menu text. This is necessary in order to
# get the access key to be the on the first character of the menu text
# instead of after the menu text. The access keys for each of the label
# items have been set to be the number preceeding '%S' listed below.
#
# '%S' is the prefs defined above, mailnews.labels.description.X.
# ie: 0 None
# 1 Important
# 2 Work
# 3 Personal
# 4 To Do
# 5 Later
labelMenuItemFormat0=0 %S
labelMenuItemFormat1=1 %S
labelMenuItemFormat2=2 %S
labelMenuItemFormat3=3 %S
labelMenuItemFormat4=4 %S
labelMenuItemFormat5=5 %S
replied=Replied
forwarded=Forwarded
new=New

Просмотреть файл

@ -56,6 +56,10 @@
#include "nsIDOMElement.h"
#include "nsDateTimeFormatCID.h"
#include "nsMsgMimeCID.h"
#include "nsIPrefService.h"
#include "nsIPrefBranch.h"
#include "nsIPrefBranchInternal.h"
#include "nsIPrefLocalizedString.h"
/* Implementation file */
static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
@ -63,10 +67,12 @@ static NS_DEFINE_CID(kDateTimeFormatCID, NS_DATETIMEFORMAT_CID);
nsrefcnt nsMsgDBView::gInstanceCount = 0;
nsIAtom * nsMsgDBView::kHighestPriorityAtom = nsnull;
nsIAtom * nsMsgDBView::kHighPriorityAtom = nsnull;
nsIAtom * nsMsgDBView::kLowestPriorityAtom = nsnull;
nsIAtom * nsMsgDBView::kLowPriorityAtom = nsnull;
#ifdef SUPPORT_PRIORITY_COLORS
nsIAtom * nsMsgDBView::kHighestPriorityAtom = nsnull;
nsIAtom * nsMsgDBView::kHighPriorityAtom = nsnull;
nsIAtom * nsMsgDBView::kLowestPriorityAtom = nsnull;
nsIAtom * nsMsgDBView::kLowPriorityAtom = nsnull;
#endif
nsIAtom * nsMsgDBView::kUnreadMsgAtom = nsnull;
nsIAtom * nsMsgDBView::kNewMsgAtom = nsnull;
@ -78,6 +84,11 @@ nsIAtom * nsMsgDBView::kImapDeletedMsgAtom = nsnull;
nsIAtom * nsMsgDBView::kAttachMsgAtom = nsnull;
nsIAtom * nsMsgDBView::kHasUnreadAtom = nsnull;
nsIAtom * nsMsgDBView::mLabelPrefColorAtoms[PREF_LABELS_MAX] = {nsnull, nsnull, nsnull, nsnull, nsnull};
nsIAtom * nsMsgDBView::kLabelColorWhiteAtom = nsnull;
nsIAtom * nsMsgDBView::kLabelColorBlackAtom = nsnull;
PRUnichar * nsMsgDBView::kHighestPriorityString = nsnull;
PRUnichar * nsMsgDBView::kHighPriorityString = nsnull;
PRUnichar * nsMsgDBView::kLowestPriorityString = nsnull;
@ -98,6 +109,7 @@ NS_INTERFACE_MAP_BEGIN(nsMsgDBView)
NS_INTERFACE_MAP_ENTRY(nsIOutlinerView)
NS_INTERFACE_MAP_ENTRY(nsIMsgCopyServiceListener)
NS_INTERFACE_MAP_ENTRY(nsIMsgSearchNotify)
NS_INTERFACE_MAP_ENTRY(nsIObserver)
NS_INTERFACE_MAP_END
nsMsgDBView::nsMsgDBView()
@ -125,6 +137,7 @@ nsMsgDBView::nsMsgDBView()
InitializeAtomsAndLiterals();
}
AddLabelPrefObservers();
gInstanceCount++;
}
@ -140,10 +153,12 @@ void nsMsgDBView::InitializeAtomsAndLiterals()
kAttachMsgAtom = NS_NewAtom("attach");
kHasUnreadAtom = NS_NewAtom("hasUnread");
#ifdef SUPPORT_PRIORITY_COLORS
kHighestPriorityAtom = NS_NewAtom("priority-highest");
kHighPriorityAtom = NS_NewAtom("priority-high");
kLowestPriorityAtom = NS_NewAtom("priority-lowest");
kLowPriorityAtom = NS_NewAtom("priority-low");
#endif
// priority strings
kHighestPriorityString = GetString(NS_LITERAL_STRING("priorityHighest").get());
@ -152,6 +167,9 @@ void nsMsgDBView::InitializeAtomsAndLiterals()
kLowPriorityString = GetString(NS_LITERAL_STRING("priorityLow").get());
kNormalPriorityString = GetString(NS_LITERAL_STRING("priorityNormal").get());
kLabelColorWhiteAtom = NS_NewAtom("lc-white");
kLabelColorBlackAtom = NS_NewAtom("lc-black");
kReadString = GetString(NS_LITERAL_STRING("read").get());
kRepliedString = GetString(NS_LITERAL_STRING("replied").get());
kForwardedString = GetString(NS_LITERAL_STRING("forwarded").get());
@ -176,17 +194,25 @@ nsMsgDBView::~nsMsgDBView()
NS_IF_RELEASE(kAttachMsgAtom);
NS_IF_RELEASE(kHasUnreadAtom);
#ifdef SUPPORT_PRIORITY_COLORS
NS_IF_RELEASE(kHighestPriorityAtom);
NS_IF_RELEASE(kHighPriorityAtom);
NS_IF_RELEASE(kLowestPriorityAtom);
NS_IF_RELEASE(kLowPriorityAtom);
#endif
for(PRInt32 i = 0; i < PREF_LABELS_MAX; i++)
NS_IF_RELEASE(mLabelPrefColorAtoms[i]);
NS_IF_RELEASE(kLabelColorWhiteAtom);
NS_IF_RELEASE(kLabelColorBlackAtom);
nsCRT::free(kHighestPriorityString);
nsCRT::free(kHighPriorityString);
nsCRT::free(kLowestPriorityString);
nsCRT::free(kLowPriorityString);
nsCRT::free(kNormalPriorityString);
nsCRT::free(kReadString);
nsCRT::free(kRepliedString);
nsCRT::free(kForwardedString);
@ -194,6 +220,134 @@ nsMsgDBView::~nsMsgDBView()
}
}
nsresult nsMsgDBView::InitLabelPrefs()
{
nsresult rv = NS_OK;
nsCString prefString;
for(PRInt32 i = 0; i < PREF_LABELS_MAX; i++)
{
prefString.Assign(PREF_LABELS_DESCRIPTION);
prefString.AppendInt(i + 1);
rv = GetPrefLocalizedString(prefString.get(), mLabelPrefDescriptions[i]);
NS_ENSURE_SUCCESS(rv,rv);
prefString.Assign(PREF_LABELS_COLOR);
prefString.AppendInt(i + 1);
rv = GetLabelPrefStringAndAtom(prefString.get(), mLabelPrefColors[i], &mLabelPrefColorAtoms[i]);
NS_ENSURE_SUCCESS(rv,rv);
}
return rv;
}
nsresult nsMsgDBView::AddLabelPrefObservers()
{
nsresult rv = NS_OK;
nsCString prefString;
nsCOMPtr<nsIPrefService> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIPrefBranch> prefBranch;
rv = prefs->GetBranch(nsnull, getter_AddRefs(prefBranch));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIPrefBranchInternal> pbi = do_QueryInterface(prefBranch, &rv);
NS_ENSURE_SUCCESS(rv,rv);
InitLabelPrefs();
for(PRInt32 i = 0; i < PREF_LABELS_MAX; i++)
{
prefString.Assign(PREF_LABELS_DESCRIPTION);
prefString.AppendInt(i + 1);
rv = pbi->AddObserver(prefString.get(), this, PR_FALSE);
NS_ENSURE_SUCCESS(rv,rv);
prefString.Assign(PREF_LABELS_COLOR);
prefString.AppendInt(i + 1);
rv = pbi->AddObserver(prefString.get(), this, PR_FALSE);
NS_ENSURE_SUCCESS(rv,rv);
}
return rv;
}
nsresult nsMsgDBView::RemoveLabelPrefObservers()
{
nsresult rv = NS_OK;
nsCString prefString;
nsCOMPtr<nsIPrefService> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIPrefBranch> prefBranch;
rv = prefs->GetBranch(nsnull, getter_AddRefs(prefBranch));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIPrefBranchInternal> pbi = do_QueryInterface(prefBranch, &rv);
NS_ENSURE_SUCCESS(rv,rv);
for(PRInt32 i = 0; i < PREF_LABELS_MAX; i++)
{
prefString.Assign(PREF_LABELS_DESCRIPTION);
prefString.AppendInt(i + 1);
rv = pbi->RemoveObserver(prefString.get(), this);
NS_ENSURE_SUCCESS(rv,rv);
prefString.Assign(PREF_LABELS_COLOR);
prefString.AppendInt(i + 1);
rv = pbi->RemoveObserver(prefString.get(), this);
NS_ENSURE_SUCCESS(rv,rv);
}
return rv;
}
NS_IMETHODIMP nsMsgDBView::Observe(nsISupports *aSubject, const char *aTopic, const PRUnichar *someData)
{
nsresult rv = NS_OK;
PRBool matchFound = PR_FALSE;
if (!nsCRT::strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID))
{
nsCString prefName;
nsCString indexStr;
PRUint32 prefNameLength;
PRInt32 indexInt;
PRInt32 irv;
prefName.AssignWithConversion(someData);
prefNameLength = prefName.Length();
/* Get the last character and convert it to an int.
* It should be a char from 1-5. */
indexStr.Assign(prefName.get() + prefNameLength - 1);
indexInt = indexStr.ToInteger(&irv);
NS_ASSERTION(!irv, "ToInteger() failed");
if (irv)
return NS_ERROR_FAILURE;
/* Determine if it's a description or a color preference */
if(prefName.Find(PREF_LABELS_DESCRIPTION, true, 0, 1) != kNotFound)
{
/* it's a description, get the localized string from the pref */
rv = GetPrefLocalizedString(prefName.get(), mLabelPrefDescriptions[indexInt - 1]);
matchFound = PR_TRUE;
}
else if(prefName.Find(PREF_LABELS_COLOR, true, 0, 1) != kNotFound)
{
/* it's a color, get the color string from the pref, and create a new atom for it */
rv = GetLabelPrefStringAndAtom(prefName.get(), mLabelPrefColors[indexInt - 1], &mLabelPrefColorAtoms[indexInt - 1]);
matchFound = PR_TRUE;
}
if(matchFound) {
NS_ENSURE_SUCCESS(rv,rv);
mOutliner->Invalidate();
}
}
return NS_OK;
}
// helper function used to fetch strings from the messenger string bundle
PRUnichar * nsMsgDBView::GetString(const PRUnichar *aStringName)
{
@ -217,6 +371,93 @@ PRUnichar * nsMsgDBView::GetString(const PRUnichar *aStringName)
return nsCRT::strdup(aStringName);
}
// helper function used to fetch localized strings from the prefs
nsresult nsMsgDBView::GetPrefLocalizedString(const char *aPrefName, nsString& aResult)
{
nsresult rv = NS_OK;
nsCOMPtr<nsIPrefService> prefService;
nsCOMPtr<nsIPrefBranch> prefBranch;
nsCOMPtr<nsIPrefLocalizedString> pls;
nsXPIDLString ucsval;
prefService = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = prefService->GetBranch(nsnull, getter_AddRefs(prefBranch));
NS_ENSURE_SUCCESS(rv, rv);
rv = prefBranch->GetComplexValue(aPrefName, NS_GET_IID(nsIPrefLocalizedString), getter_AddRefs(pls));
NS_ENSURE_SUCCESS(rv, rv);
pls->ToString(getter_Copies(ucsval));
aResult = ucsval.get();
return rv;
}
// helper function used to fetch color information from the prefs and create atoms for them.
nsresult nsMsgDBView::GetLabelPrefStringAndAtom(const char *aPrefName, nsString& aColor, nsIAtom** aColorAtom)
{
nsresult rv = NS_OK;
nsCOMPtr<nsIPrefService> prefService;
nsCOMPtr<nsIPrefBranch> prefBranch;
nsXPIDLCString csval;
nsCAutoString prefColorOutliner(LABEL_COLOR_STRING);
prefService = do_GetService(NS_PREFSERVICE_CONTRACTID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = prefService->GetBranch(nsnull, getter_AddRefs(prefBranch));
NS_ENSURE_SUCCESS(rv, rv);
rv = prefBranch->GetCharPref(aPrefName, getter_Copies(csval));
NS_ENSURE_SUCCESS(rv, rv);
aColor.AssignWithConversion(csval);
/* Build the color atom here. This is where we cache it to be used
* later in AppendLabelProperties() */
NS_IF_RELEASE(*aColorAtom);
prefColorOutliner.AppendWithConversion(aColor.get() + 1);
*aColorAtom = NS_NewAtom(prefColorOutliner.get());
NS_ENSURE_TRUE(*aColorAtom, NS_ERROR_FAILURE);
return rv;
}
// helper function used to tell the outliner to apply a certain color style
// for fonts and highlights.
nsresult nsMsgDBView::AppendLabelProperties(nsMsgLabelValue label, nsISupportsArray *aProperties)
{
NS_ENSURE_ARG_POINTER(aProperties);
// We need to subtract 1 because mLabelPrefColors is 0 based.
if(!mLabelPrefColors[label - 1].IsEmpty())
{
NS_ENSURE_TRUE(mLabelPrefColorAtoms[label - 1], NS_ERROR_FAILURE);
aProperties->AppendElement(mLabelPrefColorAtoms[label - 1]);
}
return NS_OK;
}
// helper function used to tell the outliner to apply a certain color style
// for fonts when it is highlighted.
nsresult nsMsgDBView::AppendSelectedTextColorProperties(nsMsgLabelValue label, nsISupportsArray *aProperties)
{
NS_ENSURE_ARG_POINTER(aProperties);
// This checks to see if the text color is white (#FFFFFF). If it is, we
// want to set the text color black when highlighted so it will be
// readable. We don't care if the text color is black because this
// means the highlight color will be black.
//
// We need to subtract 1 because mLabelPrefColors is 0 based.
if(mLabelPrefColors[label - 1].Equals(NS_LITERAL_STRING(LABEL_COLOR_WHITE_STRING)))
aProperties->AppendElement(kLabelColorBlackAtom);
else
aProperties->AppendElement(kLabelColorWhiteAtom);
return NS_OK;
}
///////////////////////////////////////////////////////////////////////////
// nsIOutlinerView Implementation Methods (and helper methods)
///////////////////////////////////////////////////////////////////////////
@ -414,19 +655,28 @@ nsresult nsMsgDBView::FetchPriority(nsIMsgHdr *aHdr, PRUnichar ** aPriorityStrin
nsresult nsMsgDBView::FetchLabel(nsIMsgHdr *aHdr, PRUnichar ** aLabelString)
{
nsresult rv = NS_OK;
nsMsgLabelValue label = 0;
PRUnichar labelString[2];
labelString[1] = '\0';
NS_ENSURE_ARG_POINTER(aHdr);
NS_ENSURE_ARG_POINTER(aLabelString);
aHdr->GetLabel(&label);
if (label)
// we don't care if label is not between 1 and PREF_LABELS_MAX inclusive.
if ((label < 1) || (label > PREF_LABELS_MAX))
{
*labelString = '0' + label;
*aLabelString = nsCRT::strdup(labelString);
}
else
*aLabelString = nsnull;
return NS_OK;
}
// We need to subtract 1 because mLabelPrefDescriptions is 0 based.
if(!mLabelPrefDescriptions[label - 1].IsEmpty())
{
*aLabelString = nsCRT::strdup(mLabelPrefDescriptions[label - 1].get());
if (!*aLabelString)
return NS_ERROR_OUT_OF_MEMORY;
}
return NS_OK;
}
@ -712,6 +962,31 @@ nsresult nsMsgDBView::GetSelectedIndices(nsUInt32Array *selection)
NS_IMETHODIMP nsMsgDBView::GetRowProperties(PRInt32 index, nsISupportsArray *properties)
{
nsMsgLabelValue label;
if (!IsValidIndex(index))
return NS_MSG_INVALID_DBVIEW_INDEX;
// this is where we tell the outliner to apply styles to a particular row
nsCOMPtr <nsIMsgDBHdr> msgHdr;
nsresult rv = NS_OK;
rv = GetMsgHdrForViewIndex(index, getter_AddRefs(msgHdr));
if (NS_FAILED(rv) || !msgHdr) {
ClearHdrCache();
return NS_MSG_INVALID_DBVIEW_INDEX;
}
// we only care if label is between 1 and PREF_LABELS_MAX inclusive.
if (NS_SUCCEEDED(msgHdr->GetLabel(&label)) && ((label >= 1) || (label <= PREF_LABELS_MAX)))
{
// Set the row properties. This will color the background of a row given
// a particular label color.
rv = AppendLabelProperties(label, properties);
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
@ -722,6 +997,8 @@ NS_IMETHODIMP nsMsgDBView::GetColumnProperties(const PRUnichar *colID, nsIDOMEle
NS_IMETHODIMP nsMsgDBView::GetCellProperties(PRInt32 aRow, const PRUnichar *colID, nsISupportsArray *properties)
{
nsMsgLabelValue label;
if (!IsValidIndex(aRow))
return NS_MSG_INVALID_DBVIEW_INDEX;
@ -759,26 +1036,47 @@ NS_IMETHODIMP nsMsgDBView::GetCellProperties(PRInt32 aRow, const PRUnichar *colI
if (mIsNews)
properties->AppendElement(kNewsMsgAtom);
#ifdef SUPPORT_PRIORITY_COLORS
// add special styles for priority
nsMsgPriorityValue priority;
msgHdr->GetPriority(&priority);
switch (priority)
{
case nsMsgPriority::highest:
properties->AppendElement(kHighestPriorityAtom);
properties->AppendElement(kHighestPriorityAtom);
break;
case nsMsgPriority::high:
properties->AppendElement(kHighPriorityAtom);
properties->AppendElement(kHighPriorityAtom);
break;
case nsMsgPriority::low:
properties->AppendElement(kLowPriorityAtom);
properties->AppendElement(kLowPriorityAtom);
break;
case nsMsgPriority::lowest:
properties->AppendElement(kLowestPriorityAtom);
properties->AppendElement(kLowestPriorityAtom);
break;
default:
break;
}
#endif
// we only care if label is between 1 and PREF_LABELS_MAX inclusive.
if (NS_SUCCEEDED(msgHdr->GetLabel(&label)) && ((label >= 1) || (label <= PREF_LABELS_MAX)))
{
// Set the cell properties. This will color the text of a column given
// a particular label color.
rv = AppendLabelProperties(label, properties);
NS_ENSURE_SUCCESS(rv, rv);
// AppendSelectedTextColorProperties() should not be merged into
// AppendLabelProperties() because AppendLabelProperties() is called
// by both GetCellProperties() and GetRowProperties().
//
// AppendSelectedTextColorProperties() is used to only apply the
// 'selected' text color for a label (it will not work if it's
// only called from GetRowProperties() instead of here).
rv = AppendSelectedTextColorProperties(label, properties);
NS_ENSURE_SUCCESS(rv, rv);
}
if (colID[0] == 'f')
{
@ -1139,7 +1437,6 @@ NS_IMETHODIMP nsMsgDBView::PerformActionOnCell(const PRUnichar *action, PRInt32
NS_IMETHODIMP nsMsgDBView::Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue sortType, nsMsgViewSortOrderValue sortOrder, nsMsgViewFlagsTypeValue viewFlags, PRInt32 *pCount)
{
m_viewFlags = viewFlags;
m_sortOrder = sortOrder;
m_sortType = sortType;
@ -1191,6 +1488,8 @@ NS_IMETHODIMP nsMsgDBView::ReloadFolderAfterQuickSearch()
NS_IMETHODIMP nsMsgDBView::Close()
{
RemoveLabelPrefObservers();
if (mOutliner)
mOutliner->RowCountChanged(0, -GetSize());
// this is important, because the outliner will ask us for our
@ -1414,6 +1713,7 @@ NS_IMETHODIMP nsMsgDBView::DoCommand(nsMsgViewCommandTypeValue command)
case nsMsgViewCommandType::deleteMsg:
case nsMsgViewCommandType::deleteNoTrash:
case nsMsgViewCommandType::markThreadRead:
case nsMsgViewCommandType::label0:
case nsMsgViewCommandType::label1:
case nsMsgViewCommandType::label2:
case nsMsgViewCommandType::label3:
@ -1611,12 +1911,13 @@ nsMsgDBView::ApplyCommandToIndices(nsMsgViewCommandTypeValue command, nsMsgViewI
case nsMsgViewCommandType::markThreadRead:
rv = SetThreadOfMsgReadByIndex(indices[i], imapUids, PR_TRUE);
break;
case nsMsgViewCommandType::label0:
case nsMsgViewCommandType::label1:
case nsMsgViewCommandType::label2:
case nsMsgViewCommandType::label3:
case nsMsgViewCommandType::label4:
case nsMsgViewCommandType::label5:
rv = SetLabelByIndex(indices[i], (command - nsMsgViewCommandType::label1 + 1));
rv = SetLabelByIndex(indices[i], (command - nsMsgViewCommandType::label0));
break;
default:
NS_ASSERTION(PR_FALSE, "unhandled command");

Просмотреть файл

@ -58,6 +58,8 @@
#include "nsIAtom.h"
#include "nsIImapIncomingServer.h"
#include "nsIMsgSearchNotify.h"
#include "nsIPref.h"
#include "nsIObserver.h"
#include "nsIStringBundle.h"
@ -74,10 +76,18 @@ enum eFieldType {
#define MSG_VIEW_FLAG_HASCHILDREN 0x40000000
#define MSG_VIEW_FLAG_ISTHREAD 0x8000000
/* There currently only 5 labels defined */
#define PREF_LABELS_MAX 5
#define PREF_LABELS_DESCRIPTION "mailnews.labels.description."
#define PREF_LABELS_COLOR "mailnews.labels.color."
#define LABEL_COLOR_STRING "lc-"
#define LABEL_COLOR_WHITE_STRING "#FFFFFF"
// I think this will be an abstract implementation class.
// The classes that implement the outliner support will probably
// inherit from this class.
class nsMsgDBView : public nsIMsgDBView, public nsIDBChangeListener, public nsIOutlinerView, public nsIMsgCopyServiceListener, public nsIMsgSearchNotify
class nsMsgDBView : public nsIMsgDBView, public nsIDBChangeListener, public nsIOutlinerView, public nsIMsgCopyServiceListener, public nsIMsgSearchNotify, public nsIObserver
{
public:
nsMsgDBView();
@ -89,6 +99,7 @@ public:
NS_DECL_NSIOUTLINERVIEW
NS_DECL_NSIMSGCOPYSERVICELISTENER
NS_DECL_NSIMSGSEARCHNOTIFY
NS_DECL_NSIOBSERVER
protected:
static nsrefcnt gInstanceCount;
@ -104,17 +115,22 @@ protected:
static nsIAtom* kAttachMsgAtom;
static nsIAtom* kHasUnreadAtom;
#ifdef SUPPORT_PRIORITY_COLORS
static nsIAtom* kHighestPriorityAtom;
static nsIAtom* kHighPriorityAtom;
static nsIAtom* kLowestPriorityAtom;
static nsIAtom* kLowPriorityAtom;
#endif
static PRUnichar* kHighestPriorityString;
static PRUnichar* kHighPriorityString;
static PRUnichar* kLowestPriorityString;
static PRUnichar* kLowPriorityString;
static PRUnichar* kNormalPriorityString;
static nsIAtom* kLabelColorWhiteAtom;
static nsIAtom* kLabelColorBlackAtom;
static PRUnichar* kReadString;
static PRUnichar* kRepliedString;
static PRUnichar* kForwardedString;
@ -268,6 +284,13 @@ protected:
nsresult GetKeyForFirstSelectedMessage(nsMsgKey *key);
PRBool OfflineMsgSelected(nsMsgViewIndex * indices, PRInt32 numIndices);
PRUnichar * GetString(const PRUnichar *aStringName);
nsresult AddLabelPrefObservers();
nsresult RemoveLabelPrefObservers();
nsresult GetPrefLocalizedString(const char *aPrefName, nsString& aResult);
nsresult GetLabelPrefStringAndAtom(const char *aPrefName, nsString& aColor, nsIAtom** aColorAtom);
nsresult AppendLabelProperties(nsMsgLabelValue label, nsISupportsArray *aProperties);
nsresult AppendSelectedTextColorProperties(nsMsgLabelValue label, nsISupportsArray *aProperties);
nsresult InitLabelPrefs(void);
void InitializeAtomsAndLiterals();
PRInt32 GetLevelInUnreadView(nsIMsgDBHdr *msgHdr, nsMsgViewIndex startOfThread, nsMsgViewIndex viewIndex);
nsresult GetImapDeleteModel(nsIMsgFolder *folder);
@ -312,6 +335,12 @@ protected:
nsCOMPtr<nsIMsgWindow> mMsgWindow;
nsCOMPtr<nsIMsgDBViewCommandUpdater> mCommandUpdater; // we push command update notifications to the UI from this.
nsCOMPtr<nsIStringBundle> mMessengerStringBundle;
// used for the preference labels
nsString mLabelPrefDescriptions[PREF_LABELS_MAX];
nsString mLabelPrefColors[PREF_LABELS_MAX];
// used to cache the atoms created for each color to be displayed
static nsIAtom* mLabelPrefColorAtoms[PREF_LABELS_MAX];
};
#endif

Просмотреть файл

@ -57,6 +57,8 @@ messenger.jar:
content/messenger/am-prefs.js (base/prefs/resources/content/am-prefs.js)
content/messenger/pref-mailnews.xul (base/prefs/resources/content/pref-mailnews.xul)
content/messenger/pref-mailnews.js (base/prefs/resources/content/pref-mailnews.js)
content/messenger/pref-labels.xul (base/prefs/resources/content/pref-labels.xul)
content/messenger/pref-labels.js (base/prefs/resources/content/pref-labels.js)
content/messenger/pref-viewing_messages.xul (base/prefs/resources/content/pref-viewing_messages.xul)
content/messenger/pref-receipts.xul (base/prefs/resources/content/pref-receipts.xul)
content/messenger/custreceipt.xul (base/prefs/resources/content/custreceipt.xul)
@ -237,6 +239,7 @@ en-US.jar:
locale/en-US/messenger/custreceipt.dtd (base/prefs/resources/locale/en-US/custreceipt.dtd)
locale/en-US/messenger/pref-diskspace.dtd (base/prefs/resources/locale/en-US/pref-diskspace.dtd)
locale/en-US/messenger/pref-mailnews.dtd (base/prefs/resources/locale/en-US/pref-mailnews.dtd)
locale/en-US/messenger/pref-labels.dtd (base/prefs/resources/locale/en-US/pref-labels.dtd)
locale/en-US/messenger/pref-receipts.dtd (base/prefs/resources/locale/en-US/pref-receipts.dtd)
locale/en-US/messenger/pref-viewing_messages.dtd (base/prefs/resources/locale/en-US/pref-viewing_messages.dtd)
locale/en-US/messenger/aw-accname.dtd (base/prefs/resources/locale/en-US/aw-accname.dtd)

Просмотреть файл

@ -340,3 +340,22 @@ pref("mail.compose.max_recycled_windows", 0);
// false makes it so we act like 4.x
// see bug #103010 for details
pref("news.persist_server_open_state_in_folderpane",false);
// New color prefs for Labels
pref("mailnews.labels.description.0", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.1", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.2", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.3", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.4", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.5", "chrome://messenger/locale/messenger.properties");
// mailews.labels.color.0 is not defined because there is no color associated with
// this particular label. It is defined above (mailnews.lables.description.0) because
// its description string is required in order to prepend the accesskey '0':
// ie: '0 None'.
pref("mailnews.labels.color.1", "#FF0000"); // default: red
pref("mailnews.labels.color.2", "#FF9900"); // default: orange
pref("mailnews.labels.color.3", "#009900"); // default: green
pref("mailnews.labels.color.4", "#3333FF"); // default: blue
pref("mailnews.labels.color.5", "#993399"); // default: purple

Просмотреть файл

@ -340,3 +340,22 @@ pref("mail.compose.max_recycled_windows", 0);
// false makes it so we act like 4.x
// see bug #103010 for details
pref("news.persist_server_open_state_in_folderpane",false);
// New color prefs for Labels
pref("mailnews.labels.description.0", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.1", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.2", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.3", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.4", "chrome://messenger/locale/messenger.properties");
pref("mailnews.labels.description.5", "chrome://messenger/locale/messenger.properties");
// mailews.labels.color.0 is not defined because there is no color associated with
// this particular label. It is defined above (mailnews.lables.description.0) because
// its description string is required in order to prepend the accesskey '0':
// ie: '0 None'.
pref("mailnews.labels.color.1", "#FF0000"); // default: red
pref("mailnews.labels.color.2", "#FF9900"); // default: orange
pref("mailnews.labels.color.3", "#009900"); // default: green
pref("mailnews.labels.color.4", "#3333FF"); // default: blue
pref("mailnews.labels.color.5", "#993399"); // default: purple

Просмотреть файл

@ -17,4 +17,5 @@ classic.jar:
skin/classic/messenger/searchDialog.css
skin/classic/messenger/subscribe.css
skin/classic/messenger/threadPane.css
skin/classic/messenger/threadPaneLabels.css

Просмотреть файл

@ -46,7 +46,10 @@ outlinerbody:-moz-outliner-cell-text(container, closed, hasUnread, read) {
}
/* ::::: priority colors ::::: */
/****
**** Priority colors currently not being used at the moment. It has been
**** disabled so as to not conflict with the labels color feature.
****
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-highest) {
color:red;
}
@ -62,6 +65,7 @@ outlinerbody:-moz-outliner-cell-text(priorityCol, priority-lowest) {
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-low) {
color: rgb(85, 85, 85);
}
****/
/* ::::: message icons ::::: */

Просмотреть файл

@ -0,0 +1,562 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corp.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Scott MacGregor (mscott@netscape.com)
* Joe Hewitt (hewitt@netscape.com)
* Sean Su <ssu@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* ===== threadPaneLabels.css ===========================================
== Styles for the thread pane in the Messenger 3-pane window.
======================================================================= */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: thread labels decoration ::::: */
/* There are 10x7 color definitions (size of the color picker used)
times 2 (2 style definitions for each color) + 2 general black
and white color definitions.
The color definitions can be in the following formats:
color: red;
color: #FF0000;
color: rgb(128, 0, 0);
*/
outlinerbody:-moz-outliner-cell-text(lc-FFFFFF) {
color: #FFFFFF
}
outlinerbody:-moz-outliner-row(lc-FFFFFF, selected) {
background-color: #FFFFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-CCCCCC) {
color: #CCCCCC
}
outlinerbody:-moz-outliner-row(lc-CCCCCC, selected) {
background-color: #CCCCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-C0C0C0) {
color: #C0C0C0
}
outlinerbody:-moz-outliner-row(lc-C0C0C0, selected) {
background-color: #C0C0C0;
}
outlinerbody:-moz-outliner-cell-text(lc-999999) {
color: #999999
}
outlinerbody:-moz-outliner-row(lc-999999, selected) {
background-color: #999999;
}
outlinerbody:-moz-outliner-cell-text(lc-666666) {
color: #666666
}
outlinerbody:-moz-outliner-row(lc-666666, selected) {
background-color: #666666;
}
outlinerbody:-moz-outliner-cell-text(lc-333333) {
color: #333333
}
outlinerbody:-moz-outliner-row(lc-333333, selected) {
background-color: #333333;
}
outlinerbody:-moz-outliner-cell-text(lc-000000) {
color: #000000
}
outlinerbody:-moz-outliner-row(lc-000000, selected) {
background-color: #000000;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCCCC) {
color: #FFCCCC
}
outlinerbody:-moz-outliner-row(lc-FFCCCC, selected) {
background-color: #FFCCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-FF6666) {
color: #FF6666
}
outlinerbody:-moz-outliner-row(lc-FF6666, selected) {
background-color: #FF6666;
}
outlinerbody:-moz-outliner-cell-text(lc-FF0000) {
color: #FF0000
}
outlinerbody:-moz-outliner-row(lc-FF0000, selected) {
background-color: #FF0000;
}
outlinerbody:-moz-outliner-cell-text(lc-CC0000) {
color: #CC0000
}
outlinerbody:-moz-outliner-row(lc-CC0000, selected) {
background-color: #CC0000;
}
outlinerbody:-moz-outliner-cell-text(lc-990000) {
color: #990000
}
outlinerbody:-moz-outliner-row(lc-990000, selected) {
background-color: #990000;
}
outlinerbody:-moz-outliner-cell-text(lc-660000) {
color: #660000
}
outlinerbody:-moz-outliner-row(lc-660000, selected) {
background-color: #660000;
}
outlinerbody:-moz-outliner-cell-text(lc-330000) {
color: #330000
}
outlinerbody:-moz-outliner-row(lc-330000, selected) {
background-color: #330000;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC99) {
color: #FFCC99
}
outlinerbody:-moz-outliner-row(lc-FFCC99, selected) {
background-color: #FFCC99;
}
outlinerbody:-moz-outliner-cell-text(lc-FF9966) {
color: #FF9966
}
outlinerbody:-moz-outliner-row(lc-FF9966, selected) {
background-color: #FF9966;
}
outlinerbody:-moz-outliner-cell-text(lc-FF9900) {
color: #FF9900
}
outlinerbody:-moz-outliner-row(lc-FF9900, selected) {
background-color: #FF9900;
}
outlinerbody:-moz-outliner-cell-text(lc-FF6600) {
color: #FF6600
}
outlinerbody:-moz-outliner-row(lc-FF6600, selected) {
background-color: #FF6600;
}
outlinerbody:-moz-outliner-cell-text(lc-CC6600) {
color: #CC6600
}
outlinerbody:-moz-outliner-row(lc-CC6600, selected) {
background-color: #CC6600;
}
outlinerbody:-moz-outliner-cell-text(lc-993300) {
color: #993300
}
outlinerbody:-moz-outliner-row(lc-993300, selected) {
background-color: #993300;
}
outlinerbody:-moz-outliner-cell-text(lc-663300) {
color: #663300
}
outlinerbody:-moz-outliner-row(lc-663300, selected) {
background-color: #663300;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF99) {
color: #FFFF99
}
outlinerbody:-moz-outliner-row(lc-FFFF99, selected) {
background-color: #FFFF99;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF66) {
color: #FFFF66
}
outlinerbody:-moz-outliner-row(lc-FFFF66, selected) {
background-color: #FFFF66;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC66) {
color: #FFCC66
}
outlinerbody:-moz-outliner-row(lc-FFCC66, selected) {
background-color: #FFCC66;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC33) {
color: #FFCC33
}
outlinerbody:-moz-outliner-row(lc-FFCC33, selected) {
background-color: #FFCC33;
}
outlinerbody:-moz-outliner-cell-text(lc-CC9933) {
color: #CC9933
}
outlinerbody:-moz-outliner-row(lc-CC9933, selected) {
background-color: #CC9933;
}
outlinerbody:-moz-outliner-cell-text(lc-996633) {
color: #996633
}
outlinerbody:-moz-outliner-row(lc-996633, selected) {
background-color: #996633;
}
outlinerbody:-moz-outliner-cell-text(lc-663333) {
color: #663333
}
outlinerbody:-moz-outliner-row(lc-663333, selected) {
background-color: #663333;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFFCC) {
color: #FFFFCC
}
outlinerbody:-moz-outliner-row(lc-FFFFCC, selected) {
background-color: #FFFFCC;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF33) {
color: #FFFF33
}
outlinerbody:-moz-outliner-row(lc-FFFF33, selected) {
background-color: #FFFF33;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF00) {
color: #FFFF00
}
outlinerbody:-moz-outliner-row(lc-FFFF00, selected) {
background-color: #FFFF00;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC00) {
color: #FFCC00
}
outlinerbody:-moz-outliner-row(lc-FFCC00, selected) {
background-color: #FFCC00;
}
outlinerbody:-moz-outliner-cell-text(lc-999900) {
color: #999900
}
outlinerbody:-moz-outliner-row(lc-999900, selected) {
background-color: #999900;
}
outlinerbody:-moz-outliner-cell-text(lc-666600) {
color: #666600
}
outlinerbody:-moz-outliner-row(lc-666600, selected) {
background-color: #666600;
}
outlinerbody:-moz-outliner-cell-text(lc-333300) {
color: #333300
}
outlinerbody:-moz-outliner-row(lc-333300, selected) {
background-color: #333300;
}
outlinerbody:-moz-outliner-cell-text(lc-99FF99) {
color: #99FF99
}
outlinerbody:-moz-outliner-row(lc-99FF99, selected) {
background-color: #99FF99;
}
outlinerbody:-moz-outliner-cell-text(lc-66FF99) {
color: #66FF99
}
outlinerbody:-moz-outliner-row(lc-66FF99, selected) {
background-color: #66FF99;
}
outlinerbody:-moz-outliner-cell-text(lc-33FF33) {
color: #33FF33
}
outlinerbody:-moz-outliner-row(lc-33FF33, selected) {
background-color: #33FF33;
}
outlinerbody:-moz-outliner-cell-text(lc-33CC00) {
color: #33CC00
}
outlinerbody:-moz-outliner-row(lc-33CC00, selected) {
background-color: #33CC00;
}
outlinerbody:-moz-outliner-cell-text(lc-009900) {
color: #009900
}
outlinerbody:-moz-outliner-row(lc-009900, selected) {
background-color: #009900;
}
outlinerbody:-moz-outliner-cell-text(lc-006600) {
color: #006600
}
outlinerbody:-moz-outliner-row(lc-006600, selected) {
background-color: #006600;
}
outlinerbody:-moz-outliner-cell-text(lc-003300) {
color: #003300
}
outlinerbody:-moz-outliner-row(lc-003300, selected) {
background-color: #003300;
}
outlinerbody:-moz-outliner-cell-text(lc-99FFFF) {
color: #99FFFF
}
outlinerbody:-moz-outlinerrow(lc-99FFFF, selected) {
background-color: #99FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-33FFFF) {
color: #33FFFF
}
outlinerbody:-moz-outliner-row(lc-33FFFF, selected) {
background-color: #33FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-66CCCC) {
color: #66CCCC
}
outlinerbody:-moz-outliner-row(lc-66CCCC, selected) {
background-color: #66CCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-00CCCC) {
color: #00CCCC
}
outlinerbody:-moz-outliner-row(lc-00CCCC, selected) {
background-color: #00CCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-339999) {
color: #339999
}
outlinerbody:-moz-outliner-row(lc-339999, selected) {
background-color: #339999;
}
outlinerbody:-moz-outliner-cell-text(lc-336666) {
color: #336666
}
outlinerbody:-moz-outliner-row(lc-336666, selected) {
background-color: #336666;
}
outlinerbody:-moz-outliner-cell-text(lc-003333) {
color: #003333
}
outlinerbody:-moz-outliner-row(lc-003333, selected) {
background-color: #003333;
}
outlinerbody:-moz-outliner-cell-text(lc-CCFFFF) {
color: #CCFFFF
}
outlinerbody:-moz-outliner-row(lc-CCFFFF, selected) {
background-color: #CCFFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-66FFFF) {
color: #66FFFF
}
outlinerbody:-moz-outliner-row(lc-66FFFF, selected) {
background-color: #66FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-33CCFF) {
color: #33CCFF
}
outlinerbody:-moz-outliner-row(lc-33CCFF, selected) {
background-color: #33CCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-3366FF) {
color: #3366FF
}
outlinerbody:-moz-outliner-row(lc-3366FF, selected) {
background-color: #3366FF;
}
outlinerbody:-moz-outliner-cell-text(lc-3333FF) {
color: #3333FF
}
outlinerbody:-moz-outliner-row(lc-3333FF, selected) {
background-color: #3333FF;
}
outlinerbody:-moz-outliner-cell-text(lc-000099) {
color: #000099
}
outlinerbody:-moz-outliner-row(lc-000099, selected) {
background-color: #000099;
}
outlinerbody:-moz-outliner-cell-text(lc-000066) {
color: #000066
}
outlinerbody:-moz-outliner-row(lc-000066, selected) {
background-color: #000066;
}
outlinerbody:-moz-outliner-cell-text(lc-CCCCFF) {
color: #CCCCFF
}
outlinerbody:-moz-outliner-row(lc-CCCCFF, selected) {
background-color: #CCCCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-9999FF) {
color: #9999FF
}
outlinerbody:-moz-outliner-row(lc-9999FF, selected) {
background-color: #9999FF;
}
outlinerbody:-moz-outliner-cell-text(lc-6666CC) {
color: #6666CC
}
outlinerbody:-moz-outliner-row(lc-6666CC, selected) {
background-color: #6666CC;
}
outlinerbody:-moz-outliner-cell-text(lc-6633FF) {
color: #6633FF
}
outlinerbody:-moz-outliner-row(lc-6633FF, selected) {
background-color: #6633FF;
}
outlinerbody:-moz-outliner-cell-text(lc-6600CC) {
color: #6600CC
}
outlinerbody:-moz-outliner-row(lc-6600CC, selected) {
background-color: #6600CC;
}
outlinerbody:-moz-outliner-cell-text(lc-333399) {
color: #333399
}
outlinerbody:-moz-outliner-row(lc-333399, selected) {
background-color: #333399;
}
outlinerbody:-moz-outliner-cell-text(lc-330099) {
color: #330099
}
outlinerbody:-moz-outliner-row(lc-330099, selected) {
background-color: #330099;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCCFF) {
color: #FFCCFF
}
outlinerbody:-moz-outliner-row(lc-FFCCFF, selected) {
background-color: #FFCCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-FF99FF) {
color: #FF99FF
}
outlinerbody:-moz-outliner-row(lc-FF99FF, selected) {
background-color: #FF99FF;
}
outlinerbody:-moz-outliner-cell-text(lc-CC66CC) {
color: #CC66CC
}
outlinerbody:-moz-outliner-row(lc-CC66CC, selected) {
background-color: #CC66CC;
}
outlinerbody:-moz-outliner-cell-text(lc-CC33CC) {
color: #CC33CC
}
outlinerbody:-moz-outliner-row(lc-CC33CC, selected) {
background-color: #CC33CC;
}
outlinerbody:-moz-outliner-cell-text(lc-993399) {
color: #993399
}
outlinerbody:-moz-outliner-row(lc-993399, selected) {
background-color: #993399;
}
outlinerbody:-moz-outliner-cell-text(lc-663366) {
color: #663366
}
outlinerbody:-moz-outliner-row(lc-663366, selected) {
background-color: #663366;
}
outlinerbody:-moz-outliner-cell-text(lc-330033) {
color: #330033
}
outlinerbody:-moz-outliner-row(lc-330033, selected) {
background-color: #330033;
}
outlinerbody:-moz-outliner-cell-text(lc-white, selected) {
color: #FFFFFF
}
outlinerbody:-moz-outliner-cell-text(lc-black, selected) {
color: #000000
}

Просмотреть файл

@ -17,4 +17,5 @@ classic.jar:
skin/classic/messenger/searchDialog.css
skin/classic/messenger/subscribe.css
skin/classic/messenger/threadPane.css
skin/classic/messenger/threadPaneLabels.css

Просмотреть файл

@ -46,7 +46,10 @@ outlinerbody:-moz-outliner-cell-text(container, closed, hasUnread, read) {
}
/* ::::: priority colors ::::: */
/****
**** Priority colors currently not being used at the moment. It has been
**** disabled so as to not conflict with the labels color feature.
****
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-highest) {
color: red;
}
@ -70,6 +73,7 @@ outlinerbody:-moz-outliner-cell-text(priorityCol, selected) {
outlinerbody:-moz-outliner-cell-text(priorityCol, selected, focus) {
color: HighlightText;
}
****/
/* ::::: message icons ::::: */

Просмотреть файл

@ -0,0 +1,562 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corp.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Scott MacGregor (mscott@netscape.com)
* Joe Hewitt (hewitt@netscape.com)
* Sean Su <ssu@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* ===== threadPaneLabels.css ===========================================
== Styles for the thread pane in the Messenger 3-pane window.
======================================================================= */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: thread labels decoration ::::: */
/* There are 10x7 color definitions (size of the color picker used)
times 2 (2 style definitions for each color) + 2 general black
and white color definitions.
The color definitions can be in the following formats:
color: red;
color: #FF0000;
color: rgb(128, 0, 0);
*/
outlinerbody:-moz-outliner-cell-text(lc-FFFFFF) {
color: #FFFFFF
}
outlinerbody:-moz-outliner-row(lc-FFFFFF, selected) {
background-color: #FFFFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-CCCCCC) {
color: #CCCCCC
}
outlinerbody:-moz-outliner-row(lc-CCCCCC, selected) {
background-color: #CCCCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-C0C0C0) {
color: #C0C0C0
}
outlinerbody:-moz-outliner-row(lc-C0C0C0, selected) {
background-color: #C0C0C0;
}
outlinerbody:-moz-outliner-cell-text(lc-999999) {
color: #999999
}
outlinerbody:-moz-outliner-row(lc-999999, selected) {
background-color: #999999;
}
outlinerbody:-moz-outliner-cell-text(lc-666666) {
color: #666666
}
outlinerbody:-moz-outliner-row(lc-666666, selected) {
background-color: #666666;
}
outlinerbody:-moz-outliner-cell-text(lc-333333) {
color: #333333
}
outlinerbody:-moz-outliner-row(lc-333333, selected) {
background-color: #333333;
}
outlinerbody:-moz-outliner-cell-text(lc-000000) {
color: #000000
}
outlinerbody:-moz-outliner-row(lc-000000, selected) {
background-color: #000000;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCCCC) {
color: #FFCCCC
}
outlinerbody:-moz-outliner-row(lc-FFCCCC, selected) {
background-color: #FFCCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-FF6666) {
color: #FF6666
}
outlinerbody:-moz-outliner-row(lc-FF6666, selected) {
background-color: #FF6666;
}
outlinerbody:-moz-outliner-cell-text(lc-FF0000) {
color: #FF0000
}
outlinerbody:-moz-outliner-row(lc-FF0000, selected) {
background-color: #FF0000;
}
outlinerbody:-moz-outliner-cell-text(lc-CC0000) {
color: #CC0000
}
outlinerbody:-moz-outliner-row(lc-CC0000, selected) {
background-color: #CC0000;
}
outlinerbody:-moz-outliner-cell-text(lc-990000) {
color: #990000
}
outlinerbody:-moz-outliner-row(lc-990000, selected) {
background-color: #990000;
}
outlinerbody:-moz-outliner-cell-text(lc-660000) {
color: #660000
}
outlinerbody:-moz-outliner-row(lc-660000, selected) {
background-color: #660000;
}
outlinerbody:-moz-outliner-cell-text(lc-330000) {
color: #330000
}
outlinerbody:-moz-outliner-row(lc-330000, selected) {
background-color: #330000;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC99) {
color: #FFCC99
}
outlinerbody:-moz-outliner-row(lc-FFCC99, selected) {
background-color: #FFCC99;
}
outlinerbody:-moz-outliner-cell-text(lc-FF9966) {
color: #FF9966
}
outlinerbody:-moz-outliner-row(lc-FF9966, selected) {
background-color: #FF9966;
}
outlinerbody:-moz-outliner-cell-text(lc-FF9900) {
color: #FF9900
}
outlinerbody:-moz-outliner-row(lc-FF9900, selected) {
background-color: #FF9900;
}
outlinerbody:-moz-outliner-cell-text(lc-FF6600) {
color: #FF6600
}
outlinerbody:-moz-outliner-row(lc-FF6600, selected) {
background-color: #FF6600;
}
outlinerbody:-moz-outliner-cell-text(lc-CC6600) {
color: #CC6600
}
outlinerbody:-moz-outliner-row(lc-CC6600, selected) {
background-color: #CC6600;
}
outlinerbody:-moz-outliner-cell-text(lc-993300) {
color: #993300
}
outlinerbody:-moz-outliner-row(lc-993300, selected) {
background-color: #993300;
}
outlinerbody:-moz-outliner-cell-text(lc-663300) {
color: #663300
}
outlinerbody:-moz-outliner-row(lc-663300, selected) {
background-color: #663300;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF99) {
color: #FFFF99
}
outlinerbody:-moz-outliner-row(lc-FFFF99, selected) {
background-color: #FFFF99;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF66) {
color: #FFFF66
}
outlinerbody:-moz-outliner-row(lc-FFFF66, selected) {
background-color: #FFFF66;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC66) {
color: #FFCC66
}
outlinerbody:-moz-outliner-row(lc-FFCC66, selected) {
background-color: #FFCC66;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC33) {
color: #FFCC33
}
outlinerbody:-moz-outliner-row(lc-FFCC33, selected) {
background-color: #FFCC33;
}
outlinerbody:-moz-outliner-cell-text(lc-CC9933) {
color: #CC9933
}
outlinerbody:-moz-outliner-row(lc-CC9933, selected) {
background-color: #CC9933;
}
outlinerbody:-moz-outliner-cell-text(lc-996633) {
color: #996633
}
outlinerbody:-moz-outliner-row(lc-996633, selected) {
background-color: #996633;
}
outlinerbody:-moz-outliner-cell-text(lc-663333) {
color: #663333
}
outlinerbody:-moz-outliner-row(lc-663333, selected) {
background-color: #663333;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFFCC) {
color: #FFFFCC
}
outlinerbody:-moz-outliner-row(lc-FFFFCC, selected) {
background-color: #FFFFCC;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF33) {
color: #FFFF33
}
outlinerbody:-moz-outliner-row(lc-FFFF33, selected) {
background-color: #FFFF33;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF00) {
color: #FFFF00
}
outlinerbody:-moz-outliner-row(lc-FFFF00, selected) {
background-color: #FFFF00;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC00) {
color: #FFCC00
}
outlinerbody:-moz-outliner-row(lc-FFCC00, selected) {
background-color: #FFCC00;
}
outlinerbody:-moz-outliner-cell-text(lc-999900) {
color: #999900
}
outlinerbody:-moz-outliner-row(lc-999900, selected) {
background-color: #999900;
}
outlinerbody:-moz-outliner-cell-text(lc-666600) {
color: #666600
}
outlinerbody:-moz-outliner-row(lc-666600, selected) {
background-color: #666600;
}
outlinerbody:-moz-outliner-cell-text(lc-333300) {
color: #333300
}
outlinerbody:-moz-outliner-row(lc-333300, selected) {
background-color: #333300;
}
outlinerbody:-moz-outliner-cell-text(lc-99FF99) {
color: #99FF99
}
outlinerbody:-moz-outliner-row(lc-99FF99, selected) {
background-color: #99FF99;
}
outlinerbody:-moz-outliner-cell-text(lc-66FF99) {
color: #66FF99
}
outlinerbody:-moz-outliner-row(lc-66FF99, selected) {
background-color: #66FF99;
}
outlinerbody:-moz-outliner-cell-text(lc-33FF33) {
color: #33FF33
}
outlinerbody:-moz-outliner-row(lc-33FF33, selected) {
background-color: #33FF33;
}
outlinerbody:-moz-outliner-cell-text(lc-33CC00) {
color: #33CC00
}
outlinerbody:-moz-outliner-row(lc-33CC00, selected) {
background-color: #33CC00;
}
outlinerbody:-moz-outliner-cell-text(lc-009900) {
color: #009900
}
outlinerbody:-moz-outliner-row(lc-009900, selected) {
background-color: #009900;
}
outlinerbody:-moz-outliner-cell-text(lc-006600) {
color: #006600
}
outlinerbody:-moz-outliner-row(lc-006600, selected) {
background-color: #006600;
}
outlinerbody:-moz-outliner-cell-text(lc-003300) {
color: #003300
}
outlinerbody:-moz-outliner-row(lc-003300, selected) {
background-color: #003300;
}
outlinerbody:-moz-outliner-cell-text(lc-99FFFF) {
color: #99FFFF
}
outlinerbody:-moz-outlinerrow(lc-99FFFF, selected) {
background-color: #99FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-33FFFF) {
color: #33FFFF
}
outlinerbody:-moz-outliner-row(lc-33FFFF, selected) {
background-color: #33FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-66CCCC) {
color: #66CCCC
}
outlinerbody:-moz-outliner-row(lc-66CCCC, selected) {
background-color: #66CCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-00CCCC) {
color: #00CCCC
}
outlinerbody:-moz-outliner-row(lc-00CCCC, selected) {
background-color: #00CCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-339999) {
color: #339999
}
outlinerbody:-moz-outliner-row(lc-339999, selected) {
background-color: #339999;
}
outlinerbody:-moz-outliner-cell-text(lc-336666) {
color: #336666
}
outlinerbody:-moz-outliner-row(lc-336666, selected) {
background-color: #336666;
}
outlinerbody:-moz-outliner-cell-text(lc-003333) {
color: #003333
}
outlinerbody:-moz-outliner-row(lc-003333, selected) {
background-color: #003333;
}
outlinerbody:-moz-outliner-cell-text(lc-CCFFFF) {
color: #CCFFFF
}
outlinerbody:-moz-outliner-row(lc-CCFFFF, selected) {
background-color: #CCFFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-66FFFF) {
color: #66FFFF
}
outlinerbody:-moz-outliner-row(lc-66FFFF, selected) {
background-color: #66FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-33CCFF) {
color: #33CCFF
}
outlinerbody:-moz-outliner-row(lc-33CCFF, selected) {
background-color: #33CCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-3366FF) {
color: #3366FF
}
outlinerbody:-moz-outliner-row(lc-3366FF, selected) {
background-color: #3366FF;
}
outlinerbody:-moz-outliner-cell-text(lc-3333FF) {
color: #3333FF
}
outlinerbody:-moz-outliner-row(lc-3333FF, selected) {
background-color: #3333FF;
}
outlinerbody:-moz-outliner-cell-text(lc-000099) {
color: #000099
}
outlinerbody:-moz-outliner-row(lc-000099, selected) {
background-color: #000099;
}
outlinerbody:-moz-outliner-cell-text(lc-000066) {
color: #000066
}
outlinerbody:-moz-outliner-row(lc-000066, selected) {
background-color: #000066;
}
outlinerbody:-moz-outliner-cell-text(lc-CCCCFF) {
color: #CCCCFF
}
outlinerbody:-moz-outliner-row(lc-CCCCFF, selected) {
background-color: #CCCCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-9999FF) {
color: #9999FF
}
outlinerbody:-moz-outliner-row(lc-9999FF, selected) {
background-color: #9999FF;
}
outlinerbody:-moz-outliner-cell-text(lc-6666CC) {
color: #6666CC
}
outlinerbody:-moz-outliner-row(lc-6666CC, selected) {
background-color: #6666CC;
}
outlinerbody:-moz-outliner-cell-text(lc-6633FF) {
color: #6633FF
}
outlinerbody:-moz-outliner-row(lc-6633FF, selected) {
background-color: #6633FF;
}
outlinerbody:-moz-outliner-cell-text(lc-6600CC) {
color: #6600CC
}
outlinerbody:-moz-outliner-row(lc-6600CC, selected) {
background-color: #6600CC;
}
outlinerbody:-moz-outliner-cell-text(lc-333399) {
color: #333399
}
outlinerbody:-moz-outliner-row(lc-333399, selected) {
background-color: #333399;
}
outlinerbody:-moz-outliner-cell-text(lc-330099) {
color: #330099
}
outlinerbody:-moz-outliner-row(lc-330099, selected) {
background-color: #330099;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCCFF) {
color: #FFCCFF
}
outlinerbody:-moz-outliner-row(lc-FFCCFF, selected) {
background-color: #FFCCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-FF99FF) {
color: #FF99FF
}
outlinerbody:-moz-outliner-row(lc-FF99FF, selected) {
background-color: #FF99FF;
}
outlinerbody:-moz-outliner-cell-text(lc-CC66CC) {
color: #CC66CC
}
outlinerbody:-moz-outliner-row(lc-CC66CC, selected) {
background-color: #CC66CC;
}
outlinerbody:-moz-outliner-cell-text(lc-CC33CC) {
color: #CC33CC
}
outlinerbody:-moz-outliner-row(lc-CC33CC, selected) {
background-color: #CC33CC;
}
outlinerbody:-moz-outliner-cell-text(lc-993399) {
color: #993399
}
outlinerbody:-moz-outliner-row(lc-993399, selected) {
background-color: #993399;
}
outlinerbody:-moz-outliner-cell-text(lc-663366) {
color: #663366
}
outlinerbody:-moz-outliner-row(lc-663366, selected) {
background-color: #663366;
}
outlinerbody:-moz-outliner-cell-text(lc-330033) {
color: #330033
}
outlinerbody:-moz-outliner-row(lc-330033, selected) {
background-color: #330033;
}
outlinerbody:-moz-outliner-cell-text(lc-white, selected) {
color: #FFFFFF
}
outlinerbody:-moz-outliner-cell-text(lc-black, selected) {
color: #000000
}

Просмотреть файл

@ -597,6 +597,7 @@ modern.jar:
skin/modern/messenger/searchDialog.css (messenger/searchDialog.css)
skin/modern/messenger/subscribe.css (messenger/subscribe.css)
skin/modern/messenger/threadPane.css (messenger/threadPane.css)
skin/modern/messenger/threadPaneLabels.css (messenger/threadPaneLabels.css)
skin/modern/messenger/addressbook/addressbook.css (messenger/addressbook/addressbook.css)
skin/modern/messenger/addressbook/addressPanes.css (messenger/addressbook/addressPanes.css)
skin/modern/messenger/addressbook/cardDialog.css (messenger/addressbook/cardDialog.css)

Просмотреть файл

@ -46,7 +46,10 @@ outlinerbody:-moz-outliner-cell-text(container, closed, hasUnread, read) {
}
/* ::::: priority colors ::::: */
/****
**** Priority colors currently not being used at the moment. It has been
**** disabled so as to not conflict with the labels color feature.
****
outlinerbody:-moz-outliner-cell-text(priorityCol, priority-highest) {
color: red;
}
@ -70,6 +73,7 @@ outlinerbody:-moz-outliner-cell-text(priorityCol, selected, focus) {
outlinerbody:-moz-outliner-cell-text(priorityCol, selected, focus) {
color: #FFFFFF;
}
****/
/* ::::: message icons ::::: */

Просмотреть файл

@ -0,0 +1,562 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Mozilla Communicator.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corp.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Scott MacGregor (mscott@netscape.com)
* Joe Hewitt (hewitt@netscape.com)
* Sean Su <ssu@netscape.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* ===== threadPaneLabels.css ===========================================
== Styles for the thread pane in the Messenger 3-pane window.
======================================================================= */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* ::::: thread labels decoration ::::: */
/* There are 10x7 color definitions (size of the color picker used)
times 2 (2 style definitions for each color) + 2 general black
and white color definitions.
The color definitions can be in the following formats:
color: red;
color: #FF0000;
color: rgb(128, 0, 0);
*/
outlinerbody:-moz-outliner-cell-text(lc-FFFFFF) {
color: #FFFFFF
}
outlinerbody:-moz-outliner-row(lc-FFFFFF, selected) {
background-color: #FFFFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-CCCCCC) {
color: #CCCCCC
}
outlinerbody:-moz-outliner-row(lc-CCCCCC, selected) {
background-color: #CCCCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-C0C0C0) {
color: #C0C0C0
}
outlinerbody:-moz-outliner-row(lc-C0C0C0, selected) {
background-color: #C0C0C0;
}
outlinerbody:-moz-outliner-cell-text(lc-999999) {
color: #999999
}
outlinerbody:-moz-outliner-row(lc-999999, selected) {
background-color: #999999;
}
outlinerbody:-moz-outliner-cell-text(lc-666666) {
color: #666666
}
outlinerbody:-moz-outliner-row(lc-666666, selected) {
background-color: #666666;
}
outlinerbody:-moz-outliner-cell-text(lc-333333) {
color: #333333
}
outlinerbody:-moz-outliner-row(lc-333333, selected) {
background-color: #333333;
}
outlinerbody:-moz-outliner-cell-text(lc-000000) {
color: #000000
}
outlinerbody:-moz-outliner-row(lc-000000, selected) {
background-color: #000000;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCCCC) {
color: #FFCCCC
}
outlinerbody:-moz-outliner-row(lc-FFCCCC, selected) {
background-color: #FFCCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-FF6666) {
color: #FF6666
}
outlinerbody:-moz-outliner-row(lc-FF6666, selected) {
background-color: #FF6666;
}
outlinerbody:-moz-outliner-cell-text(lc-FF0000) {
color: #FF0000
}
outlinerbody:-moz-outliner-row(lc-FF0000, selected) {
background-color: #FF0000;
}
outlinerbody:-moz-outliner-cell-text(lc-CC0000) {
color: #CC0000
}
outlinerbody:-moz-outliner-row(lc-CC0000, selected) {
background-color: #CC0000;
}
outlinerbody:-moz-outliner-cell-text(lc-990000) {
color: #990000
}
outlinerbody:-moz-outliner-row(lc-990000, selected) {
background-color: #990000;
}
outlinerbody:-moz-outliner-cell-text(lc-660000) {
color: #660000
}
outlinerbody:-moz-outliner-row(lc-660000, selected) {
background-color: #660000;
}
outlinerbody:-moz-outliner-cell-text(lc-330000) {
color: #330000
}
outlinerbody:-moz-outliner-row(lc-330000, selected) {
background-color: #330000;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC99) {
color: #FFCC99
}
outlinerbody:-moz-outliner-row(lc-FFCC99, selected) {
background-color: #FFCC99;
}
outlinerbody:-moz-outliner-cell-text(lc-FF9966) {
color: #FF9966
}
outlinerbody:-moz-outliner-row(lc-FF9966, selected) {
background-color: #FF9966;
}
outlinerbody:-moz-outliner-cell-text(lc-FF9900) {
color: #FF9900
}
outlinerbody:-moz-outliner-row(lc-FF9900, selected) {
background-color: #FF9900;
}
outlinerbody:-moz-outliner-cell-text(lc-FF6600) {
color: #FF6600
}
outlinerbody:-moz-outliner-row(lc-FF6600, selected) {
background-color: #FF6600;
}
outlinerbody:-moz-outliner-cell-text(lc-CC6600) {
color: #CC6600
}
outlinerbody:-moz-outliner-row(lc-CC6600, selected) {
background-color: #CC6600;
}
outlinerbody:-moz-outliner-cell-text(lc-993300) {
color: #993300
}
outlinerbody:-moz-outliner-row(lc-993300, selected) {
background-color: #993300;
}
outlinerbody:-moz-outliner-cell-text(lc-663300) {
color: #663300
}
outlinerbody:-moz-outliner-row(lc-663300, selected) {
background-color: #663300;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF99) {
color: #FFFF99
}
outlinerbody:-moz-outliner-row(lc-FFFF99, selected) {
background-color: #FFFF99;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF66) {
color: #FFFF66
}
outlinerbody:-moz-outliner-row(lc-FFFF66, selected) {
background-color: #FFFF66;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC66) {
color: #FFCC66
}
outlinerbody:-moz-outliner-row(lc-FFCC66, selected) {
background-color: #FFCC66;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC33) {
color: #FFCC33
}
outlinerbody:-moz-outliner-row(lc-FFCC33, selected) {
background-color: #FFCC33;
}
outlinerbody:-moz-outliner-cell-text(lc-CC9933) {
color: #CC9933
}
outlinerbody:-moz-outliner-row(lc-CC9933, selected) {
background-color: #CC9933;
}
outlinerbody:-moz-outliner-cell-text(lc-996633) {
color: #996633
}
outlinerbody:-moz-outliner-row(lc-996633, selected) {
background-color: #996633;
}
outlinerbody:-moz-outliner-cell-text(lc-663333) {
color: #663333
}
outlinerbody:-moz-outliner-row(lc-663333, selected) {
background-color: #663333;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFFCC) {
color: #FFFFCC
}
outlinerbody:-moz-outliner-row(lc-FFFFCC, selected) {
background-color: #FFFFCC;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF33) {
color: #FFFF33
}
outlinerbody:-moz-outliner-row(lc-FFFF33, selected) {
background-color: #FFFF33;
}
outlinerbody:-moz-outliner-cell-text(lc-FFFF00) {
color: #FFFF00
}
outlinerbody:-moz-outliner-row(lc-FFFF00, selected) {
background-color: #FFFF00;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCC00) {
color: #FFCC00
}
outlinerbody:-moz-outliner-row(lc-FFCC00, selected) {
background-color: #FFCC00;
}
outlinerbody:-moz-outliner-cell-text(lc-999900) {
color: #999900
}
outlinerbody:-moz-outliner-row(lc-999900, selected) {
background-color: #999900;
}
outlinerbody:-moz-outliner-cell-text(lc-666600) {
color: #666600
}
outlinerbody:-moz-outliner-row(lc-666600, selected) {
background-color: #666600;
}
outlinerbody:-moz-outliner-cell-text(lc-333300) {
color: #333300
}
outlinerbody:-moz-outliner-row(lc-333300, selected) {
background-color: #333300;
}
outlinerbody:-moz-outliner-cell-text(lc-99FF99) {
color: #99FF99
}
outlinerbody:-moz-outliner-row(lc-99FF99, selected) {
background-color: #99FF99;
}
outlinerbody:-moz-outliner-cell-text(lc-66FF99) {
color: #66FF99
}
outlinerbody:-moz-outliner-row(lc-66FF99, selected) {
background-color: #66FF99;
}
outlinerbody:-moz-outliner-cell-text(lc-33FF33) {
color: #33FF33
}
outlinerbody:-moz-outliner-row(lc-33FF33, selected) {
background-color: #33FF33;
}
outlinerbody:-moz-outliner-cell-text(lc-33CC00) {
color: #33CC00
}
outlinerbody:-moz-outliner-row(lc-33CC00, selected) {
background-color: #33CC00;
}
outlinerbody:-moz-outliner-cell-text(lc-009900) {
color: #009900
}
outlinerbody:-moz-outliner-row(lc-009900, selected) {
background-color: #009900;
}
outlinerbody:-moz-outliner-cell-text(lc-006600) {
color: #006600
}
outlinerbody:-moz-outliner-row(lc-006600, selected) {
background-color: #006600;
}
outlinerbody:-moz-outliner-cell-text(lc-003300) {
color: #003300
}
outlinerbody:-moz-outliner-row(lc-003300, selected) {
background-color: #003300;
}
outlinerbody:-moz-outliner-cell-text(lc-99FFFF) {
color: #99FFFF
}
outlinerbody:-moz-outlinerrow(lc-99FFFF, selected) {
background-color: #99FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-33FFFF) {
color: #33FFFF
}
outlinerbody:-moz-outliner-row(lc-33FFFF, selected) {
background-color: #33FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-66CCCC) {
color: #66CCCC
}
outlinerbody:-moz-outliner-row(lc-66CCCC, selected) {
background-color: #66CCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-00CCCC) {
color: #00CCCC
}
outlinerbody:-moz-outliner-row(lc-00CCCC, selected) {
background-color: #00CCCC;
}
outlinerbody:-moz-outliner-cell-text(lc-339999) {
color: #339999
}
outlinerbody:-moz-outliner-row(lc-339999, selected) {
background-color: #339999;
}
outlinerbody:-moz-outliner-cell-text(lc-336666) {
color: #336666
}
outlinerbody:-moz-outliner-row(lc-336666, selected) {
background-color: #336666;
}
outlinerbody:-moz-outliner-cell-text(lc-003333) {
color: #003333
}
outlinerbody:-moz-outliner-row(lc-003333, selected) {
background-color: #003333;
}
outlinerbody:-moz-outliner-cell-text(lc-CCFFFF) {
color: #CCFFFF
}
outlinerbody:-moz-outliner-row(lc-CCFFFF, selected) {
background-color: #CCFFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-66FFFF) {
color: #66FFFF
}
outlinerbody:-moz-outliner-row(lc-66FFFF, selected) {
background-color: #66FFFF;
}
outlinerbody:-moz-outliner-cell-text(lc-33CCFF) {
color: #33CCFF
}
outlinerbody:-moz-outliner-row(lc-33CCFF, selected) {
background-color: #33CCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-3366FF) {
color: #3366FF
}
outlinerbody:-moz-outliner-row(lc-3366FF, selected) {
background-color: #3366FF;
}
outlinerbody:-moz-outliner-cell-text(lc-3333FF) {
color: #3333FF
}
outlinerbody:-moz-outliner-row(lc-3333FF, selected) {
background-color: #3333FF;
}
outlinerbody:-moz-outliner-cell-text(lc-000099) {
color: #000099
}
outlinerbody:-moz-outliner-row(lc-000099, selected) {
background-color: #000099;
}
outlinerbody:-moz-outliner-cell-text(lc-000066) {
color: #000066
}
outlinerbody:-moz-outliner-row(lc-000066, selected) {
background-color: #000066;
}
outlinerbody:-moz-outliner-cell-text(lc-CCCCFF) {
color: #CCCCFF
}
outlinerbody:-moz-outliner-row(lc-CCCCFF, selected) {
background-color: #CCCCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-9999FF) {
color: #9999FF
}
outlinerbody:-moz-outliner-row(lc-9999FF, selected) {
background-color: #9999FF;
}
outlinerbody:-moz-outliner-cell-text(lc-6666CC) {
color: #6666CC
}
outlinerbody:-moz-outliner-row(lc-6666CC, selected) {
background-color: #6666CC;
}
outlinerbody:-moz-outliner-cell-text(lc-6633FF) {
color: #6633FF
}
outlinerbody:-moz-outliner-row(lc-6633FF, selected) {
background-color: #6633FF;
}
outlinerbody:-moz-outliner-cell-text(lc-6600CC) {
color: #6600CC
}
outlinerbody:-moz-outliner-row(lc-6600CC, selected) {
background-color: #6600CC;
}
outlinerbody:-moz-outliner-cell-text(lc-333399) {
color: #333399
}
outlinerbody:-moz-outliner-row(lc-333399, selected) {
background-color: #333399;
}
outlinerbody:-moz-outliner-cell-text(lc-330099) {
color: #330099
}
outlinerbody:-moz-outliner-row(lc-330099, selected) {
background-color: #330099;
}
outlinerbody:-moz-outliner-cell-text(lc-FFCCFF) {
color: #FFCCFF
}
outlinerbody:-moz-outliner-row(lc-FFCCFF, selected) {
background-color: #FFCCFF;
}
outlinerbody:-moz-outliner-cell-text(lc-FF99FF) {
color: #FF99FF
}
outlinerbody:-moz-outliner-row(lc-FF99FF, selected) {
background-color: #FF99FF;
}
outlinerbody:-moz-outliner-cell-text(lc-CC66CC) {
color: #CC66CC
}
outlinerbody:-moz-outliner-row(lc-CC66CC, selected) {
background-color: #CC66CC;
}
outlinerbody:-moz-outliner-cell-text(lc-CC33CC) {
color: #CC33CC
}
outlinerbody:-moz-outliner-row(lc-CC33CC, selected) {
background-color: #CC33CC;
}
outlinerbody:-moz-outliner-cell-text(lc-993399) {
color: #993399
}
outlinerbody:-moz-outliner-row(lc-993399, selected) {
background-color: #993399;
}
outlinerbody:-moz-outliner-cell-text(lc-663366) {
color: #663366
}
outlinerbody:-moz-outliner-row(lc-663366, selected) {
background-color: #663366;
}
outlinerbody:-moz-outliner-cell-text(lc-330033) {
color: #330033
}
outlinerbody:-moz-outliner-row(lc-330033, selected) {
background-color: #330033;
}
outlinerbody:-moz-outliner-cell-text(lc-white, selected) {
color: #FFFFFF
}
outlinerbody:-moz-outliner-cell-text(lc-black, selected) {
color: #000000
}