Add the Instantbird application in the repository.
Add the Instantbird application in the repository.
new file mode 100644
--- /dev/null
+++ b/im/LICENSE.txt
@@ -0,0 +1,6 @@
+FOR TRANSLATIONS OF THIS LICENSE INTO SELECTED LANGUAGES, PLEASE VISIT WWW.INSTANTBIRD.ORG/LICENSING.
+
+INSTANTBIRD END-USER SOFTWARE LICENSE AGREEMENT
+Version 1.0
+
+
new file mode 100644
--- /dev/null
+++ b/im/Makefile.in
@@ -0,0 +1,60 @@
+#
+# ***** 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.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+DEPTH = ..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(topsrcdir)/config/config.mk
+
+DIRS = base locales themes app
+# components extensions
+
+include $(topsrcdir)/config/rules.mk
+
+ifeq ($(OS_ARCH),WINNT)
+ifdef MOZ_INSTALLER
+DIRS += installer/windows
+
+# For Windows build the uninstaller during the application build since the
+# uninstaller is included with the application for mar file generation.
+libs::
+ $(MAKE) -C installer/windows uninstaller
+
+endif
+endif
new file mode 100644
--- /dev/null
+++ b/im/app/Makefile.in
@@ -0,0 +1,392 @@
+# ***** 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.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications.
+# Portions created by the Initial Developer are Copyright (C) 2002
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Brian Ryner <bryner@brianryner.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 *****
+
+DEPTH = ../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+AB_CD = $(MOZ_UI_LOCALE)
+
+GRE_MILESTONE = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build Milestone)
+GRE_BUILDID = $(shell $(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(LIBXUL_DIST)/bin/platform.ini Build BuildID)
+
+PLATFORM_LICENSE_FILE = $(topsrcdir)/toolkit/content/license.html
+MAIL_LICENSE_HTML_FILE = ../license.html
+MAIL_LICENSE_TXT_FILE = $(topsrcdir)/instantbird/LICENSE.txt
+MAIL_APP_LICENSE_FILE = $(srcdir)/app-license.html
+
+DEFINES += \
+ -DINSTANTBIRD_ICO=\"$(DIST)/branding/instantbird.ico\" \
+ -DAB_CD=$(AB_CD) \
+ -DGRE_MILESTONE=$(GRE_MILESTONE) \
+ -DGRE_BUILDID=$(GRE_BUILDID) \
+ -DAPP_EULA_BLOCK=$(MAIL_APP_LICENSE_FILE) \
+ $(NULL)
+
+DIRS = profile
+
+GARBAGE += \
+ $(MAIL_LICENSE_HTML_FILE) \
+ $(FINAL_TARGET)/license.html \
+ $(NULL)
+
+PREF_JS_EXPORTS = \
+ $(srcdir)/profile/all-instantbird.js \
+ $(srcdir)/profile/channel-prefs.js \
+ $(NULL)
+
+ifeq ($(USE_SHORT_LIBNAME), 1)
+PROGRAM = instantbird$(BIN_SUFFIX)
+else
+PROGRAM = instantbird-bin$(BIN_SUFFIX)
+endif
+
+REQUIRES = \
+ xpcom \
+ string \
+ xulapp \
+ $(NULL)
+
+CPPSRCS = nsMailApp.cpp
+
+DIST_FILES = application.ini
+
+LOCAL_INCLUDES += -I$(topsrcdir)/toolkit/xre
+
+ifdef BUILD_STATIC_LIBS
+ifdef _MSC_VER
+STATIC_COMPONENTS_LINKER_PATH = -LIBPATH:$(DEPTH)/staticlib
+else
+STATIC_COMPONENTS_LINKER_PATH = -L$(DEPTH)/staticlib
+endif
+LIBS += $(DEPTH)/toolkit/xre/$(LIB_PREFIX)xulapp_s.$(LIB_SUFFIX)
+else
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+LIBS += $(DIST)/bin/XUL
+else
+EXTRA_DSO_LIBS += xul
+endif
+endif
+
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+TK_LIBS := -framework Cocoa $(TK_LIBS)
+endif
+
+ifdef MOZ_ENABLE_LIBXUL
+APP_XPCOM_LIBS = $(XPCOM_GLUE_LDOPTS)
+else
+MOZILLA_INTERNAL_API = 1
+APP_XPCOM_LIBS = $(XPCOM_LIBS)
+endif
+
+LIBS += \
+ $(STATIC_COMPONENTS_LINKER_PATH) \
+ $(MOZ_JS_LIBS) \
+ $(EXTRA_DSO_LIBS) \
+ $(APP_XPCOM_LIBS) \
+ $(NSPR_LIBS) \
+ $(TK_LIBS) \
+ $(NULL)
+
+# Add explicit X11 dependency when building against X11 toolkits
+ifneq (,$(filter gtk gtk2 xlib,$(MOZ_WIDGET_TOOLKIT)))
+LIBS += $(XLDFLAGS) $(XLIBS)
+endif
+
+ifdef MOZ_JPROF
+LIBS += -ljprof
+endif
+
+ifndef MOZ_WINCONSOLE
+ifdef MOZ_DEBUG
+MOZ_WINCONSOLE = 1
+else
+MOZ_WINCONSOLE = 0
+endif
+endif
+
+NSDISTMODE = copy
+
+include $(topsrcdir)/config/config.mk
+
+ifdef _MSC_VER
+# Always enter a Windows program through wmain, whether or not we're
+# a console application.
+WIN32_EXE_LDFLAGS += -ENTRY:wmainCRTStartup
+endif
+
+ifndef BUILD_STATIC_LIBS
+
+ifdef NS_TRACE_MALLOC
+EXTRA_DSO_LIBS += tracemalloc
+endif
+
+else
+include $(topsrcdir)/config/static-config.mk
+
+EXTRA_DEPS += \
+ $(STATIC_EXTRA_DEPS) \
+ $(NULL)
+DEFINES += $(STATIC_DEFINES)
+CPPSRCS += $(STATIC_CPPSRCS)
+EXTRA_DSO_LIBS += $(STATIC_EXTRA_DSO_LIBS)
+REQUIRES += $(STATIC_REQUIRES)
+EXTRA_LIBS += $(STATIC_EXTRA_LIBS)
+endif
+
+ifeq ($(OS_ARCH),WINNT)
+OS_LIBS += $(call EXPAND_LIBNAME,comctl32 comdlg32 uuid shell32 ole32 oleaut32 version winspool)
+OS_LIBS += $(call EXPAND_LIBNAME,usp10 msimg32)
+RCINCLUDE = splash.rc
+ifndef GNU_CC
+RCFLAGS += -DMOZ_INSTANTBIRD -I$(srcdir)
+else
+RCFLAGS += -DMOZ_INSTANTBIRD --include-dir $(srcdir)
+endif
+ifdef BUILD_STATIC_LIBS
+RCFLAGS += -DMOZ_STATIC_BUILD
+endif
+endif
+
+ifeq ($(OS_ARCH),BeOS)
+ifdef BUILD_STATIC_LIBS
+OS_LIBS += -ltracker -lgame
+endif
+endif
+
+ifeq ($(OS_ARCH),OS2)
+RESFILE=splashos2.res
+RCFLAGS += -DMOZ_INSTANTBIRD
+ifdef BUILD_STATIC_LIBS
+RCFLAGS += -DMOZ_STATIC_BUILD -i $(DIST)/include/widget
+endif
+ifdef DEBUG
+RCFLAGS += -DDEBUG
+endif
+endif
+
+include $(topsrcdir)/config/rules.mk
+
+ifdef MOZILLA_OFFICIAL
+DEFINES += -DMOZILLA_OFFICIAL
+endif
+
+ifdef BUILD_STATIC_LIBS
+include $(topsrcdir)/config/static-rules.mk
+
+DEFINES += -DIMPL_XREAPI
+endif
+
+APP_VERSION = $(shell cat $(srcdir)/../config/version.txt)
+DEFINES += -DAPP_VERSION="$(APP_VERSION)"
+
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+ifdef BUILD_STATIC_LIBS
+LIBS += -lcups -framework AddressBook
+endif
+endif
+
+ifeq ($(OS_ARCH),WINNT)
+#
+# Control the default heap size.
+# This is the heap returned by GetProcessHeap().
+# As we use the CRT heap, the default size is too large and wastes VM.
+#
+# The default heap size is 1MB on Win32.
+# The heap will grow if need be.
+#
+# Set it to 256k. See bug 127069.
+#
+ifndef GNU_CC
+LDFLAGS += /HEAP:0x40000
+endif
+endif
+
+$(PROGRAM): $(DEPTH)/toolkit/xre/$(LIB_PREFIX)xulapp_s.$(LIB_SUFFIX)
+
+ifneq (,$(filter windows os2 gtk gtk2,$(MOZ_WIDGET_TOOLKIT)))
+ifneq (,$(filter windows os2,$(MOZ_WIDGET_TOOLKIT)))
+ICON_SUFFIX=.ico
+else
+ICON_SUFFIX=.xpm
+endif
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ICON_DIR=gtk
+else
+ICON_DIR=$(MOZ_WIDGET_TOOLKIT)
+endif
+
+DESKTOP_ICONS = \
+ abcardWindow \
+ addressbookWindow \
+ messengerWindow \
+ msgcomposeWindow \
+ $(NULL)
+
+ifeq ($(ICON_DIR),gtk)
+DESKTOP_ICONS_SMALL=$(patsubst %,%16,$(DESKTOP_ICONS))
+endif
+
+DESKTOP_ICON_FILES = $(addsuffix $(ICON_SUFFIX), $(DESKTOP_ICONS) $(DESKTOP_ICONS_SMALL))
+
+libs:: $(addprefix icons/$(ICON_DIR)/,$(DESKTOP_ICON_FILES))
+ $(INSTALL) $^ $(DIST)/bin/chrome/icons/default
+
+install:: $(addprefix icons/$(ICON_DIR)/,$(DESKTOP_ICON_FILES))
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/chrome/icons/default
+endif
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+libs::
+ $(INSTALL) $(DIST)/branding/default.xpm $(DIST)/bin/chrome/icons/default
+
+install::
+ $(SYSINSTALL) $(IFLAGS1) $(DIST)/branding/default.xpm $(DESTDIR)$(mozappdir)/chrome/icons/default
+endif
+
+export::
+ifndef MOZ_BRANDING_DIRECTORY
+ $(NSINSTALL) -D $(DIST)/branding
+ifeq ($(OS_ARCH),WINNT)
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/instantbird.ico
+ cp $(srcdir)/instantbird.ico $(DIST)/branding/app.ico
+endif
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+ cp $(srcdir)/macbuild/instantbird.icns $(DIST)/branding/instantbird.icns
+ cp $(srcdir)/macbuild/dsstore $(DIST)/branding/dsstore
+ cp $(srcdir)/macbuild/background.png $(DIST)/branding/background.png
+ cp $(srcdir)/macbuild/disk.icns $(DIST)/branding/disk.icns
+# cp $(srcdir)/macbuild/license.r $(DIST)/branding/license.r
+endif
+ifneq (,$(filter gtk gtk2,$(MOZ_WIDGET_TOOLKIT)))
+ cp $(srcdir)/mozicon16.xpm $(DIST)/branding/mozicon16.xpm
+ cp $(srcdir)/mozicon50.xpm $(DIST)/branding/mozicon50.xpm
+endif
+ifeq ($(MOZ_WIDGET_TOOLKIT),gtk2)
+ cp $(srcdir)/default.xpm $(DIST)/branding/default.xpm
+endif
+endif
+
+ifneq (,$(filter-out OS2 WINNT Darwin,$(OS_ARCH)))
+instantbird:: mozilla.in Makefile.in Makefile $(DEPTH)/config/autoconf.mk
+ cat $< | sed -e "s|%MOZAPPDIR%|$(mozappdir)|" \
+ -e "s|%MREDIR%|$(mredir)|" \
+ -e "s|%MOZILLA-BIN%|$(PROGRAM)|g" > $@
+ chmod +x $@
+
+libs:: instantbird
+ $(INSTALL) $< $(DIST)/bin
+
+install:: instantbird
+ $(SYSINSTALL) $< $(DESTDIR)$(bindir)
+
+GARBAGE += instantbird
+GARBAGE += $(addprefix $(DIST)/bin/defaults/pref/, all.js all-instantbird.js channel-prefs.js)
+endif
+
+ifneq (,$(filter gtk gtk2,$(MOZ_WIDGET_TOOLKIT)))
+ICON_FILES = \
+ $(DIST)/branding/mozicon50.xpm \
+ $(DIST)/branding/mozicon16.xpm \
+ $(NULL)
+
+libs::
+ $(INSTALL) $(ICON_FILES) $(DIST)/bin/icons
+
+install::
+ $(SYSINSTALL) $(IFLAGS1) $(ICON_FILES) $(DESTDIR)$(mozappdir)/icons
+endif
+
+ifeq ($(MOZ_WIDGET_TOOLKIT),photon)
+LIBS += -lphexlib
+endif
+
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+
+AB := $(firstword $(subst -, ,$(AB_CD)))
+
+ifdef MOZ_DEBUG
+APP_NAME = InstantbirdDebug
+else
+APP_NAME = Instantbird
+endif
+
+libs:: $(PROGRAM)
+ mkdir -p $(DIST)/$(APP_NAME).app/Contents/MacOS
+ rsync -a --exclude CVS --exclude "*.in" $(srcdir)/macbuild/Contents $(DIST)/$(APP_NAME).app --exclude English.lproj
+ mkdir -p $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj
+ rsync -a --exclude CVS --exclude "*.in" $(srcdir)/macbuild/Contents/Resources/English.lproj/ $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj
+ sed -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" $(srcdir)/macbuild/Contents/Info.plist.in > $(DIST)/$(APP_NAME).app/Contents/Info.plist
+ sed -e "s/%APP_VERSION%/$(APP_VERSION)/" -e "s/%APP_NAME%/$(APP_NAME)/" $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > $(DIST)/$(APP_NAME).app/Contents/Resources/$(AB).lproj/InfoPlist.strings
+ rsync -a $(DIST)/bin/ $(DIST)/$(APP_NAME).app/Contents/MacOS
+ rm -f $(DIST)/$(APP_NAME).app/Contents/MacOS/$(PROGRAM)
+ rsync -aL $(PROGRAM) $(DIST)/$(APP_NAME).app/Contents/MacOS
+ mkdir -p $(DIST)/$(APP_NAME).app/Contents/Plug-Ins
+ rsync -a --copy-unsafe-links $(DIST)/package/PrintPDE.plugin $(DIST)/$(APP_NAME).app/Contents/Plug-Ins
+ cp -RL $(DIST)/branding/instantbird.icns $(DIST)/$(APP_NAME).app/Contents/Resources/instantbird.icns
+ cp -RL $(srcdir)/macbuild/mail-biff-badge.png $(DIST)/$(APP_NAME).app/Contents/Resources/mail-biff-badge.png
+ echo -n APPLMOZM > $(DIST)/$(APP_NAME).app/Contents/PkgInfo
+# remove CVS dirs from packaged app
+ find $(DIST)/$(APP_NAME).app -type d -name "CVS" -prune -exec rm -rf {} \;
+
+clean clobber::
+ rm -rf $(DIST)/$(APP_NAME).app
+endif
+
+$(MAIL_LICENSE_HTML_FILE): $(PLATFORM_LICENSE_FILE) $(MAIL_APP_LICENSE_FILE)
+ $(PYTHON) $(MOZILLA_DIR)/config/Preprocessor.py $(DEFINES) $< | \
+ sed -e "s/about:license\#/\#/" > $@
+
+libs:: $(MAIL_LICENSE_TXT_FILE) $(MAIL_LICENSE_HTML_FILE)
+ifeq ($(OS_ARCH),WINNT)
+ $(EXIT_ON_ERROR) \
+ for file in $^; do \
+ $(PERL) -pe 's/(?<!\r)\n/\r\n/g;' < $$file > $(FINAL_TARGET)/`basename $$file`; \
+ done
+else
+ $(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)
+endif
+
+libs:: $(srcdir)/profile/prefs.js
+ $(INSTALL) $^ $(DIST)/bin/defaults/profile
+
+install:: $(srcdir)/profile/prefs.js
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/defaults/profile
new file mode 100644
--- /dev/null
+++ b/im/app/app-license.html
@@ -0,0 +1,5 @@
+ <p>Official <b>binaries</b> of this product released by
+ <a href="http://www.mozillamessaging.com/">Mozilla Messaging, Inc.</a>
+ are made available under
+ <a href="http://www.mozilla.org/foundation/EULA/">the corresponding
+ EULA</a>.
new file mode 100644
--- /dev/null
+++ b/im/app/application.ini
@@ -0,0 +1,58 @@
+; ***** 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 Firefox.
+;
+; The Initial Developer of the Original Code is
+; Benjamin Smedberg <benjamin@smedbergs.us>.
+;
+; Portions created by the Initial Developer are Copyright (C) 2006
+; the Mozilla Foundation <http://www.mozilla.org/>. All Rights Reserved.
+;
+; Contributor(s):
+;
+; 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 *****
+
+#filter substitution
+[App]
+Name=Instantbird
+Version=@APP_VERSION@
+BuildID=@GRE_BUILDID@
+Copyright=Copyright (c) 2007-2008 Florian Queze
+ID={33cb9019-c295-46dd-be21-8c4936574bee}
+
+[Gecko]
+MinVersion=@GRE_MILESTONE@
+MaxVersion=@GRE_MILESTONE@
+
+[XRE]
+EnableExtensionManager=1
+
+#if MOZILLA_OFFICIAL
+[Crash Reporter]
+Enabled=1
+ServerURL=https://crash-reports.mozilla.com/submit
+#endif
+
new file mode 100644
index 0000000000000000000000000000000000000000..1ef44d21fbf5d0854e569d4a03054001ea7a1260
GIT binary patch
literal 954
zc$@*c14aCaP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00004b3#c}2nYxW
zd<bNS00009a7bBm0002J0002J0UcV#`Tzg`8FWQhbW?9;ba!ELWdL_~cP?peYja~^
zaAhuUa%Y?FJQ@H112;)TK~y-6ZPQz9lXV=%@$dib`}Rc7>)OpOLuA8tOap-l-9n5p
zn4qF09^$+JU5qy>mwIWu@XC-#)WqnOiNr)9F~mi;5dy<Rc7l~MyR9s2?Yi?=kL%&>
z`@UWnNJM_O&y&y9^Am<)@Tl{@@ue&JO#6vcRq6;Bm66m&esJdOsnWwe@i1`g^WP3U
zePGXEq}Ag~*3ArN1%1IfrDB!IJFBT%qw$_wXHG8u7ns_sAn5umcKU<%eXsR;92TJq
zxSWRzIf?hYD$SBkMb(&0=k;HH9Xpl#_N^cP1#Wlj1x_coyn*lQKb^37TsUkJ=W~Lh
zY$EC~SS%Z4N;>bjtCVXR-wdxB_lAdeRWE$FAOmmKb;&iE-TmT3InCW-7_%KpRv8q*
zKwSn+!->uhYclG#K=>Mk(in^Z9vM&)Yu<p#VljW@KF5T<pILUZXoM(fPPD3tqc)w8
zUE`0m%2IlX$8(!lyhZoPXAhl`f%sy<`Fcr~X|U8dVjZPZPf(NXAPF!aR5u99I>nJ~
zB5o(o9c|-!{}9vRz`GJKmMz=-PAN~mZ05$rB6B}a(<(BEg$%W9g{88ArW-UhD7^gY
zAx4I-(Am*UpvmtPhGFpO+4qy7fZDd5EYjQC$M~hI+*Mat+GwQRB`A1(C|(&eW@chr
ztYlTPxe8nJGg%2BUO0TMT+&cNR>lYVS)Pj1w3_F5PXv#s@OGOZaN|0$-{XA8OPp7u
z3~Yyq=ft1{@ON7O>e^x$lT;^J$k5Z>PE~`s(LZVSTli~u5{tvZyb-{cyh5a!;7R)$
zp7rUA50>b9;p4HkmiocIXa;RAhc)CT(B@-vcAb^mRXPuM6YY+ms0FGU%Ou9*3|)#(
zN%tpNQ5t%t=4Jis%R%(k9bm7sw!DGnl32IeIrd67BSTloWm4RUPh;I-q3hri=?6fq
z|C5@c7JR8xMgL-;m7DVlhFSu(grSz9c#r3ggqe;dXz)9Es-p#6*X#d#CIHXA<L6Xc
zW3Ru_Cc=+ZaAY^x-{dvidalso5-HgvSxhF$o=9XS9ti*hckTfQ0y}{fAhWtKtKHAL
cgb;xFA3Y6rvkUkTQ~&?~07*qoM6N<$f(hfx00000
new file mode 100644
--- /dev/null
+++ b/im/app/instantbird.exe.manifest
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+<assemblyIdentity
+ version="1.0.0.0"
+ processorArchitecture="*"
+ name="Instantbird"
+ type="win32"
+/>
+<description>Mozilla Thunderbird</description>
+<dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ processorArchitecture="*"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ />
+ </dependentAssembly>
+</dependency>
+<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
+ <ms_asmv3:security>
+ <ms_asmv3:requestedPrivileges>
+ <ms_asmv3:requestedExecutionLevel level="asInvoker" uiAccess="false">
+ </ms_asmv3:requestedExecutionLevel>
+ </ms_asmv3:requestedPrivileges>
+ </ms_asmv3:security>
+</ms_asmv3:trustInfo>
+</assembly>
new file mode 100644
index 0000000000000000000000000000000000000000..8ca2d4a2114d7c0712fc857a4d0823e4e076c984
GIT binary patch
literal 22486
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
new file mode 100644
--- /dev/null
+++ b/im/app/macbuild/Contents/Info.plist.in
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>CFBundleDevelopmentRegion</key>
+ <string>English</string>
+ <key>CFBundleExecutable</key>
+ <string>instantbird-bin</string>
+ <key>CFBundleGetInfoString</key>
+ <string>%APP_NAME% %APP_VERSION%, © 1998-2008 Contributors</string>
+ <key>CFBundleIconFile</key>
+ <string>instantbird</string>
+ <key>CFBundleIdentifier</key>
+ <string>org.instantbird</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>%APP_NAME%</string>
+ <key>CFBundlePackageType</key>
+ <string>APPL</string>
+ <key>CFBundleShortVersionString</key>
+ <string>%APP_VERSION%</string>
+ <key>CFBundleSignature</key>
+ <string>MOZM</string>
+ <key>CFBundleVersion</key>
+ <string>%APP_VERSION%</string>
+ <key>CFBundleURLTypes</key>
+ <array>
+ <dict>
+ <key>CFBundleURLName</key>
+ <string>Email Address URL</string>
+ <key>CFBundleURLSchemes</key>
+ <array>
+ <string>mailto</string>
+ </array>
+ </dict>
+ <dict>
+ <key>CFBundleURLName</key>
+ <string>News URL</string>
+ <key>CFBundleURLSchemes</key>
+ <array>
+ <string>news</string>
+ </array>
+ </dict>
+ <dict>
+ <key>CFBundleURLName</key>
+ <string>RSS / ATOM URL</string>
+ <key>CFBundleURLSchemes</key>
+ <array>
+ <string>feed</string>
+ </array>
+ </dict>
+ </array>
+ <key>NSAppleScriptEnabled</key>
+ <true/>
+ <key>CGDisableCoalescedUpdates</key>
+ <true/>
+</dict>
+</plist>
new file mode 100644
--- /dev/null
+++ b/im/app/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in
@@ -0,0 +1,2 @@
+CFBundleName = "%APP_NAME%";
+NSHumanReadableCopyright = "Copyright © 1998-2008 Contributors";
new file mode 100644
index 0000000000000000000000000000000000000000..e52f31d051010215470ae91fc84a6d29d8645efa
GIT binary patch
literal 1143
zc%17D@N?(olHy`uVBq!ia0y~yV4MKNIvh+uk)*3dQyCao>^xl@Ln`LHxx&cHz`$`p
zA^rckS&yY#68IF7*cF^29NIQC@FX%y9%3?TVNK!SJ|Q4BK~YD+nS2RZb^!_u=wWAI
z`2Qd1T27!B8W#Lte_QYcM=NU%2lovDu?>nk3C<A*fXa9i8Kn;~nY9eC1k0#nM;$vX
f9ox$QQpU{S^vQqmo7HMxfLsPoS3j3^P6<r_lQ?mb
new file mode 100644
index 0000000000000000000000000000000000000000..c0c60c03eecb6675898713949a77f62022e73fcd
GIT binary patch
literal 41398
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�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
H(enQQauKGY
new file mode 100755
index 0000000000000000000000000000000000000000..7fcf8490babaf07962254ecda95da87eb97ec5b9
GIT binary patch
literal 6148
zc%1E+O>7%Q6oB7bZ)~SA?Gi#738h%HDoO#93JOgsRFgV_HX;}`EgTvWd+j<_9Ix4|
z9iX7DQb3A8&>nz-goIF~_C{`8kb=Y|6_+X}#D%rQp%4y5>LEfPGe2*g^~RQRKq@MJ
z(fFIU^WK{`GrP010RS8+XAS~r01yUAbq6$+FqJK$cnpxoFw(3RN$S=JW36WMMx1>7
zqTo+M(+%EHc<6i$Z0KdR{jhqz#<W(_0RePwIr9&EHL>u~$Cp-WH?K9ZLSFFIjVl+%
z`<Lrio#9(YkCm^w#l3vgZY<J01bAY@!5b+{FIok5;VI-}((Ey;KC>>Ys^N<*^OSR<
z@KB3O<G-+aA1jY~+BGU%)Rs{OE+oC`;?mx@==(IRqW<1(ne3r+z8IR<r&$aXj5)CU
z&Q+W&mvHTy?{Mw*G_L)z3<Fnw^q8a97ppxsR@Ffn=dlc&w1enG&WSc>h+8YXeR1jf
zs<>tXl#8!rOp7UDJPc>-0G`UsindcPY22RYj?SNhf+DsUkCfeTPh#}h1h4Y-=4&r}
zhoBqB;1${LM%<UHxE~P_P&p9Cbmc8`>D}KO#^L<kI7i!%`R?~iVnxN>Rln!AC8Ohs
zsI1u!H;j+vYNf@~63AL+jz^~ZO(8x({FL~)Wax(Q?qI`o{z`&7_MlG>`Sh?)@2t<6
ze0F0aW6veh1@H5V2UxvFwjMur`o*+i6yy}d&MxE!$ykHm@UYUWtmgG%g+elmyk0TL
zqMO(2!;Tk?VzzE$&CeJn?^0eV<#kJXiO%^io9=KTn>CXubGFF@uk=qC&p#rn+Rk)J
zpUs&@xtNKSin;Bt(x&vVc$2PDV*;>c!MkFc{qU?+F$)Upb<-U77!3P!+6jADNka;B
zn1vjeU_cp)kbxMK7;~@-y4j*6Aj|$tNHR;4S!#TtR{B5qn)P-s)xY35ikv!_?Hu#B
z;Em%2L$9w50N<*nYc(1Ru;>#oLp}2NX~?r*-g}Dqmwev*VgAJ9-IlvbXb%W?-PttS
z(w4UT2ZiqsQDU5EOCq%^MAhS?5u?O7(UwHAQ-~@tOw@=`Vw`A8(x!#<UPkH}=?ewv
zfQM0H+)b<+(ZJpFR2Ijpclh+6PY?O@uwS=#HJ<MRH|2RP@GEhh&T*HCpAiE@mDoWH
z5<|pJ;tpaLF(Ro_9F^jz6h{sE&XZ3P54qnr#HWc_;#p#jI77TH*zX(v9-sc;migK3
zJO5&XuK4T&KK<Wbug)#`ML_xa2u=-@aPoWcP4dFa$z&y;U7!pjbz4^ox@C%$TiEyJ
zC0p^1rx4BSMnNxFMc&T7AcNjxWU5k#veSRQV&pTz|HHQr+G^wc*a7%<ZXM6)U!rql
z5SmD7ZuIrK(z`hxblC3+uHWxD|J!{yb>9zS;-~hz-^Kw6jlcg#TYvwzr7dl_iv`uh
x$prtG9kwvwn^%;TY1aXo9|Xvjzl!@{(>6+s6K%;mbP(Xue*d@M|Nry%|39%};28h_
new file mode 100644
index 0000000000000000000000000000000000000000..fe522f0f04786bf26d4739f90c9d5432eb607bd6
GIT binary patch
literal 59767
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
bY&CUF?H1Zvn&g!)%}V~i_J8gF7w!K6Cf!Gu
new file mode 100644
index 0000000000000000000000000000000000000000..d1d9348bc2feea408f7b66ae6db11fc41b167d34
GIT binary patch
literal 3009
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
new file mode 100644
--- /dev/null
+++ b/im/app/module.ver
@@ -0,0 +1,9 @@
+WIN32_MODULE_DESCRIPTION=Instantbird
+WIN32_MODULE_PRODUCTNAME=Instantbird
+WIN32_MODULE_NAME=Instantbird
+WIN32_MODULE_PRODUCTVERSION=0,1,2,0
+WIN32_MODULE_PRODUCTVERSION_STRING=0.1.2pre
+WIN32_MODULE_COPYRIGHT=©Instantbird, Mozilla and libpurple Developers, according to the GPL 2.0 license, as applicable.
+WIN32_MODULE_COMPANYNAME=Instantbird
+WIN32_MODULE_TRADEMARKS=Instantbird
+WIN32_MODULE_COMMENT=Instantbird Instant Messaging Client
new file mode 100644
--- /dev/null
+++ b/im/app/mozicon16.xpm
@@ -0,0 +1,116 @@
+/* XPM */
+static char *mozilla.xpm[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 94 2",
+" c opaque",
+". c #655a47",
+"X c #7e6e53",
+"o c #897a5e",
+"O c #817764",
+"+ c #817a6f",
+"@ c #897d63",
+"# c #8e8063",
+"$ c #918369",
+"% c #948974",
+"& c #988b71",
+"* c #988e7d",
+"= c #a2947b",
+"- c #af9e7a",
+"; c #858995",
+": c #958d83",
+"> c #9b9da6",
+", c #9ea3b2",
+"< c #99a0b8",
+"1 c #a09682",
+"2 c #aa9c81",
+"3 c #a09a90",
+"4 c #afa285",
+"5 c #afa288",
+"6 c #a8a090",
+"7 c #b4a586",
+"8 c #b3a689",
+"9 c #b8aa8c",
+"0 c #b8ad96",
+"q c #bcb199",
+"w c #a1a0a2",
+"e c #a8a6a4",
+"r c #aca9a5",
+"t c #a7aab6",
+"y c #a6a9b8",
+"u c #aab0bd",
+"i c #b6afa1",
+"p c #b5b1aa",
+"a c #bbb4a4",
+"s c #b1b3be",
+"d c #adb6cc",
+"f c #adb7d1",
+"g c #b1b9cd",
+"h c #b7c0d6",
+"j c #b8c4e3",
+"k c #c4b188",
+"l c #c3b496",
+"z c #c3b69b",
+"x c #cebd96",
+"c c #c9bb99",
+"v c #c6b9a1",
+"b c #c3bcac",
+"n c #c8bca6",
+"m c #c4bfb2",
+"M c #d2c097",
+"N c #d0c19d",
+"B c #cfc2a3",
+"V c #cfc4af",
+"C c #c7c0b2",
+"Z c #ccc5b5",
+"A c #d5c7a5",
+"S c #d7c9ad",
+"D c #dbcdae",
+"F c #d7ceba",
+"G c #daceb5",
+"H c #ddd0b3",
+"J c #dbd1ba",
+"K c #e3d7ba",
+"L c #e3d8be",
+"P c #dfd9c8",
+"I c #cdd4e5",
+"U c #cfd8ec",
+"Y c #d3defc",
+"T c #dee2ef",
+"R c #d7e3ff",
+"E c #dfe4f3",
+"W c #dbe7ff",
+"Q c #dde8fe",
+"! c #e5dbc4",
+"~ c #eadec4",
+"^ c #e8dfc8",
+"/ c #ece3cd",
+"( c #ece4d1",
+") c #efe8d5",
+"_ c #e5eaf5",
+"` c #e3edfe",
+"' c #e7f1fe",
+"] c #eef4fe",
+"[ c #f9f3e3",
+"{ c #fbf6e8",
+"} c #f1f6ff",
+"| c #f4faff",
+" . c #fbfeff",
+".. c None",
+/* pixels */
+"..............# @ @ ............",
+"............@ 3 C a @ ..........",
+"........@ @ 3 b b Z Z O ........",
+"......@ E T g , > r p m @ ......",
+"....@ ; . . .} _ I g d y @ ....",
+"..# + f .} ] ] ] . .| U r @ ..",
+"..7 * g ' ` ' ` W ` ` ` r k @ ..",
+"..9 H 0 s Y ` W R W R u 8 M @ ..",
+"..5 L L v w j d t g < 1 N x @ ..",
+"..2 L ! ( J : i P b % B A x @ ..",
+"..= L ! ( F n [ { [ F 5 c x @ ..",
+"..& K J q Z ( / / ! ^ G 8 - @ ..",
+"..$ G 2 n / ~ ! L L G D l X @ ..",
+"..o 8 c ~ J S l - # . @ @ @ ....",
+"..@ & = @ @ @ ..................",
+"................................"
+};
new file mode 100644
--- /dev/null
+++ b/im/app/mozicon50.xpm
@@ -0,0 +1,292 @@
+/* XPM */
+static char *mozilla.xpm[] = {
+/* columns rows colors chars-per-pixel */
+"48 48 238 2",
+" c opaque",
+". c #3f301d",
+"X c #3d3e3b",
+"o c #06175e",
+"O c #04264b",
+"+ c #04294f",
+"@ c #05255e",
+"# c #08227d",
+"$ c #063567",
+"% c #0f3c75",
+"& c #1a257a",
+"* c #26394a",
+"= c #323641",
+"- c #313940",
+"; c #393848",
+": c #06407f",
+"> c #16406c",
+", c #1a4571",
+"< c #3c4449",
+"1 c #24476c",
+"2 c #453722",
+"3 c #4b3d28",
+"4 c #4f422d",
+"5 c #51432d",
+"6 c #574933",
+"7 c #524c3f",
+"8 c #5e4f38",
+"9 c #5d503b",
+"0 c #64553e",
+"q c #404a4d",
+"w c #4a4647",
+"e c #4a4d4d",
+"r c #424e59",
+"t c #484754",
+"y c #5d584c",
+"u c #5a6368",
+"i c #665840",
+"p c #645b48",
+"a c #6a5b43",
+"s c #6c5f49",
+"d c #6c614e",
+"f c #73644b",
+"g c #766a57",
+"h c #746c5e",
+"j c #7b6c53",
+"k c #7b6e58",
+"l c #7e725a",
+"z c #63646b",
+"x c #6c6f7d",
+"c c #7f7766",
+"v c #787974",
+"b c #787d7f",
+"n c #092a8c",
+"m c #0e219e",
+"M c #0a289c",
+"N c #093c9c",
+"B c #0c21ab",
+"V c #0b2aab",
+"C c #0d23bb",
+"Z c #1022a0",
+"A c #253293",
+"S c #0f2ada",
+"D c #102ce9",
+"F c #1130f9",
+"G c #08469d",
+"H c #0f5096",
+"J c #08519d",
+"K c #155496",
+"L c #1e5692",
+"P c #0948ac",
+"I c #0851a0",
+"U c #0958ad",
+"Y c #0e5db1",
+"T c #1158a4",
+"R c #165eaa",
+"E c #0960bc",
+"W c #2b5d91",
+"Q c #33409e",
+"! c #0a68cc",
+"~ c #0b71dc",
+"^ c #0b77eb",
+"/ c #44578c",
+"( c #4f5c84",
+") c #616d91",
+"_ c #68708b",
+"` c #6f7996",
+"' c #7e7d81",
+"] c #6d7caa",
+"[ c #717ea7",
+"{ c #0c80fb",
+"} c #7e898f",
+"| c #7e8592",
+" . c #7c849d",
+".. c #7481a7",
+"X. c #7280aa",
+"o. c #7a87ac",
+"O. c #7685b1",
+"+. c #817259",
+"@. c #897a5e",
+"#. c #877860",
+"$. c #857a69",
+"%. c #8b7e66",
+"&. c #8f8064",
+"*. c #8c8271",
+"=. c #918165",
+"-. c #94856a",
+";. c #9b8c6f",
+":. c #918672",
+">. c #918978",
+",. c #9b8d73",
+"<. c #998e7a",
+"1. c #9e9175",
+"2. c #a19274",
+"3. c #a4957a",
+"4. c #a7997e",
+"5. c #ab9b7c",
+"6. c #838389",
+"7. c #868886",
+"8. c #898787",
+"9. c #878992",
+"0. c #848999",
+"q. c #859097",
+"w. c #8e9098",
+"e. c #908a83",
+"r. c #94918e",
+"t. c #9a9181",
+"y. c #99968d",
+"u. c #969290",
+"i. c #9a9691",
+"p. c #9f9b93",
+"a. c #9d9b9b",
+"s. c #858da5",
+"d. c #808db4",
+"f. c #8190bd",
+"g. c #8e98b1",
+"h. c #9195a3",
+"j. c #9c9ea6",
+"k. c #a19682",
+"l. c #a49981",
+"z. c #a39c8d",
+"x. c #a99c84",
+"c. c #a39d93",
+"v. c #aea083",
+"b. c #ada189",
+"n. c #a6a196",
+"m. c #a7a299",
+"M. c #aca495",
+"N. c #aca79c",
+"B. c #b3a484",
+"V. c #b1a68b",
+"C. c #b6aa8f",
+"Z. c #b6ab94",
+"A. c #b1aa9c",
+"S. c #bbad91",
+"D. c #bdb090",
+"F. c #bbb099",
+"G. c #a4a4aa",
+"H. c #b6afa0",
+"J. c #b6b0a5",
+"K. c #bab3a5",
+"L. c #bcb6a9",
+"P. c #beb8aa",
+"I. c #8796c1",
+"U. c #8d9cca",
+"Y. c #9da7c4",
+"T. c #9fa8c4",
+"R. c #9da9c9",
+"E. c #97a6d1",
+"W. c #98a9da",
+"Q. c #a3adcb",
+"!. c #adb3c3",
+"~. c #abb6d3",
+"^. c #b0b6c1",
+"/. c #b1bcdb",
+"(. c #a8b8e1",
+"). c #b5c0de",
+"_. c #b8c2d8",
+"`. c #bac5e4",
+"'. c #bbc7e8",
+"]. c #c0af87",
+"[. c #c4b38d",
+"{. c #c3b493",
+"}. c #c1b69b",
+"|. c #c6b89d",
+" X c #c9b994",
+".X c #ccbd9a",
+"XX c #c3b8a0",
+"oX c #c2bbad",
+"OX c #c4beb1",
+"+X c #cec2a3",
+"@X c #c6c0b2",
+"#X c #c9c2b5",
+"$X c #ccc6b9",
+"%X c #d1c4a4",
+"&X c #d2c5a8",
+"*X c #d5c9ab",
+"=X c #d8cbae",
+"-X c #d5c9b0",
+";X c #d9ceb2",
+":X c #dbd0b5",
+">X c #ddd3ba",
+",X c #e0d6bd",
+"<X c #c0c7db",
+"1X c #c0c9da",
+"2X c #d2cec4",
+"3X c #c3cdea",
+"4X c #cad3e6",
+"5X c #c8d4ee",
+"6X c #c7d3f5",
+"7X c #cad6f8",
+"8X c #cddaf4",
+"9X c #d2dbed",
+"0X c #d8deee",
+"qX c #d1dbf2",
+"wX c #d0dbfb",
+"eX c #dbe1ed",
+"rX c #d6e1fc",
+"tX c #dfe4f0",
+"yX c #dae5fd",
+"uX c #dee9fe",
+"iX c #e3d9c3",
+"pX c #e6ddc8",
+"aX c #e8dfca",
+"sX c #e8e0cc",
+"dX c #ebe4d2",
+"fX c #eee8d6",
+"gX c #f1ebdb",
+"hX c #e2e9f7",
+"jX c #e3ecfd",
+"kX c #e9effc",
+"lX c #e7f0fe",
+"zX c #ebf2fd",
+"xX c #f5f0e1",
+"cX c #f9f5e9",
+"vX c #f1f6fd",
+"bX c #f5f9fe",
+"nX c #fafcfe",
+"mX c None",
+/* pixels */
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX&.&.&.mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX&.&.t.M.*.5 mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX&.k A.K.K.K.z.9 mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX%.:.L.L.L.P.P.oXA.s mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX&.z.oXoXoXoXoXoXoXoXK.k mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmX] X.X.$.c.A.K.oXOX@X#X#X@X#XoX%.mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmX/ <XnXtXW.X.` 9.p.N.K.oXOX#X$X$X$X,.mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmX( vXnXnXnXnXeX/.I.[ .w.c.G.H.P.OX#Xl.mXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmX=.o.nXnXnXbXnXbXnXbXbXeX).E.O.o.s.h.a.m.>.mXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmX&.x _.nXnXbXvXvXvXbXbXnXnXnXnXbXzXqX'.(.W.U.X._ mXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmX&.m.) hXbXbXvXzXbXvXzXzXzXzXbXbXvXzXnXzXzXkXeX^.6.v.mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmX&.&.h o.lXzXvXzXzXzXzXzXzXuXzXzXvXzXzXzXzXzXtX!.y.v.5.mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXB.1.z R.yXlXkXkXkXlXzXjXuXkXyXzXkXzXkXzXzXeX^.i.5.].4.mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX2.*XF.1.G.4XuXuXuXjXuXlXuXrXyXyXuXuXuXuXuXeX!.y.2.[.[.2.mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX;.*X*X+X3.m._.qXrXyXuXuXuXyXyXyXuXrXrXyX8X!.r.2. X X[.;.mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX-.*X=X>X:XV.<.!.5XrXyXuXuXrXwXrXuXwX8X5X| - d D. X X[.-.mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX&.=X:X>X>X,XXX-.j.`.7XrX8X'.).'.8X6X'.T.8.p B t V. X[.=.mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX@.=X:X>X,XpXaX:X;.e.~.).T.h.8.r.j.Q.g.- k Z.A D w 5.[.l mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX+.*X:X>X,XaXaXdXdXb.$. .>.4.e z.b.-.1 < l.}.Q F Z l B.X mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXj =X:X>XiXsXaXdXdXgXoX-.F.cXR b 2X7.^ 7 y c B F F ; 1.H + mXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXf ;X:X>X,XiXsXdXdXdXn.Z.cXK.^ H y.W { * X % F F F & q ^ I mXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXf *X:X>X>XiXaXpXdXb.b.xXxXq.{ { , E { Y > ! S F F m ! { E mXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXa *X:X>X>X,XpXpXx.l.gXgXgX} { { { E { { U E C F F C { { E mXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX0 &X*X:X>X>X,Xl.3.fXfXdXp.r E { ! E { { { E V F F V { { + mXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX9 %X*X=X:X>X4.,.aXdXdXaXiXW ~ ^ @ I ^ { { { ^ n F N ^ { ! mXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX6 %X*X*X=X4.-.iXaXaXiXiX,Xv ! ^ C o J { { { { ^ # ! { ^ H mXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX5 %X%X&X3.&.>XiXiXiX,X,X>Xu U ^ M C ! ! ^ { { { ^ { { ^ mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX3 .X%X2.#.>X,X,X>X:X>X:X;XV.T { P S Y { { { { { { { { { mXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX2 .X2.k -X>X:X;X;X=X=X%XS.2.&.Y { I @ ^ ^ { { { { { ^ mXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX. ;.j &X:X=X|.v.,.&.&.%.mXmXmXmX$ U ^ ^ { ^ { ^ ^ I mXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmX3 i &.&.&.&.&.mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX",
+"mXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmXmX"
+};
new file mode 100644
--- /dev/null
+++ b/im/app/mozilla.in
@@ -0,0 +1,144 @@
+#!/bin/sh
+#
+# ***** 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.org Code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 1998
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+## $Id: mozilla.in,v 1.8 2008/01/07 23:17:04 reed%reedloden.com Exp $
+##
+## Usage:
+##
+## $ mozilla [args]
+##
+## This script is meant to run the mozilla-bin binary from either
+## mozilla/xpfe/bootstrap or mozilla/dist/bin.
+##
+## The script will setup all the environment voodoo needed to make
+## the mozilla-bin binary to work.
+##
+
+#uncomment for debugging
+#set -x
+
+moz_libdir=%MOZAPPDIR%
+MRE_HOME=%MREDIR%
+
+# Use run-mozilla.sh in the current dir if it exists
+# If not, then start resolving symlinks until we find run-mozilla.sh
+found=0
+progname="$0"
+curdir=`dirname "$progname"`
+progbase=`basename "$progname"`
+run_moz="$curdir/run-mozilla.sh"
+if test -x "$run_moz"; then
+ dist_bin="$curdir"
+ found=1
+else
+ here=`/bin/pwd`
+ while [ -h "$progname" ]; do
+ bn=`basename "$progname"`
+ cd `dirname "$progname"`
+ progname=`/bin/ls -l "$bn" | sed -e 's/^.* -> //' `
+ progbase=`basename "$progname"`
+ if [ ! -x "$progname" ]; then
+ break
+ fi
+ curdir=`dirname "$progname"`
+ run_moz="$curdir/run-mozilla.sh"
+ if [ -x "$run_moz" ]; then
+ cd "$curdir"
+ dist_bin=`pwd`
+ found=1
+ break
+ fi
+ done
+ cd "$here"
+fi
+if [ $found = 0 ]; then
+ # Check default compile-time libdir
+ if [ -x "$moz_libdir/run-mozilla.sh" ]; then
+ dist_bin="$moz_libdir"
+ else
+ echo "Cannot find mozilla runtime directory. Exiting."
+ exit 1
+ fi
+fi
+
+script_args=""
+debugging=0
+MOZILLA_BIN="${progbase}-bin"
+
+if [ "$OSTYPE" = "beos" ]; then
+ mimeset -F "$MOZILLA_BIN"
+fi
+
+pass_arg_count=0
+while [ $# -gt $pass_arg_count ]
+do
+ case "$1" in
+ -p | --pure | -pure)
+ MOZILLA_BIN="${MOZILLA_BIN}.pure"
+ shift
+ ;;
+ -g | --debug)
+ script_args="$script_args -g"
+ debugging=1
+ shift
+ ;;
+ -d | --debugger)
+ script_args="$script_args -d $2"
+ shift 2
+ ;;
+ *)
+ # Move the unrecognized argument to the end of the list.
+ arg="$1"
+ shift
+ set -- "$@" "$arg"
+ pass_arg_count=`expr $pass_arg_count + 1`
+ ;;
+ esac
+done
+
+export MRE_HOME
+
+if [ $debugging = 1 ]
+then
+ echo $dist_bin/run-mozilla.sh $script_args $dist_bin/$MOZILLA_BIN "$@"
+fi
+"$dist_bin/run-mozilla.sh" $script_args "$dist_bin/$MOZILLA_BIN" "$@"
+exitcode=$?
+
+exit $exitcode
+# EOF.
new file mode 100644
index 0000000000000000000000000000000000000000..a66ab68d962337bd5a0cdcefab9267b83d2bb895
GIT binary patch
literal 7824
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
new file mode 100644
--- /dev/null
+++ b/im/app/nsMailApp.cpp
@@ -0,0 +1,106 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** 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.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Brian Ryner <bryner@brianryner.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 ***** */
+
+#include "nsXULAppAPI.h"
+#ifdef XP_WIN
+#include <windows.h>
+#include <stdlib.h>
+#endif
+
+#include <stdio.h>
+#include <stdarg.h>
+
+#include "nsCOMPtr.h"
+#include "nsILocalFile.h"
+#include "nsStringGlue.h"
+
+#ifdef XP_WIN
+#include "nsWindowsWMain.cpp"
+#endif
+
+static void Output(const char *fmt, ... )
+{
+ va_list ap;
+ va_start(ap, fmt);
+
+#if defined(XP_WIN) && !MOZ_WINCONSOLE
+ char msg[2048];
+
+ _vsnprintf(msg, sizeof(msg), fmt, ap);
+
+ MessageBox(NULL, msg, "XULRunner", MB_OK | MB_ICONERROR);
+#else
+ vfprintf(stderr, fmt, ap);
+#endif
+
+ va_end(ap);
+}
+
+/**
+ * A helper class which calls NS_LogInit/NS_LogTerm in its scope.
+ */
+class ScopedLogging
+{
+public:
+ ScopedLogging() { NS_LogInit(); }
+ ~ScopedLogging() { NS_LogTerm(); }
+};
+
+int main(int argc, char* argv[])
+{
+ ScopedLogging log;
+
+ nsCOMPtr<nsILocalFile> appini;
+ nsresult rv = XRE_GetBinaryPath(argv[0], getter_AddRefs(appini));
+ if (NS_FAILED(rv)) {
+ Output("Couldn't calculate the application directory.");
+ return 255;
+ }
+ appini->SetNativeLeafName(NS_LITERAL_CSTRING("application.ini"));
+
+ nsXREAppData *appData;
+ rv = XRE_CreateAppData(appini, &appData);
+ if (NS_FAILED(rv)) {
+ Output("Couldn't read application.ini");
+ return 255;
+ }
+
+ int result = XRE_main(argc, argv, appData);
+ XRE_FreeAppData(appData);
+ return result;
+}
new file mode 100644
--- /dev/null
+++ b/im/app/profile/Makefile.in
@@ -0,0 +1,64 @@
+#
+# ***** 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.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2002
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+DEPTH = ../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = extensions
+
+include $(topsrcdir)/config/rules.mk
+
+FILES := \
+ mimeTypes.rdf \
+ localstore.rdf \
+ $(NULL)
+
+libs:: $(FILES)
+ $(SYSINSTALL) $^ $(DIST)/bin/defaults/profile
+ $(SYSINSTALL) $^ $(DIST)/bin/defaults/profile/US
+
+install:: $(FILES)
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/defaults/profile
+ $(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)/defaults/profile/US
+
+ifneq (,$(filter gtk2 mac cocoa, $(MOZ_WIDGET_TOOLKIT)))
+DEFINES += -DHAVE_SHELL_SERVICE=1
+endif
new file mode 100644
--- /dev/null
+++ b/im/app/profile/all-instantbird.js
@@ -0,0 +1,32 @@
+pref("toolkit.defaultChromeURI", "chrome://instantbird/content/blist.xul");
+pref("general.useragent.extra.instantbird", "Instantbird/0.1.2pre");
+pref("accessibility.browsewithcaret", true);
+
+pref("messenger.accounts", "");
+pref("messenger.options.playSounds", true);
+
+/* Extension manager */
+pref("xpinstall.dialog.confirm", "chrome://mozapps/content/xpinstall/xpinstallConfirm.xul");
+pref("xpinstall.dialog.progress.skin", "chrome://mozapps/content/extensions/extensions.xul");
+pref("xpinstall.dialog.progress.chrome", "chrome://mozapps/content/extensions/extensions.xul");
+pref("xpinstall.dialog.progress.type.skin", "Extension:Manager");
+pref("xpinstall.dialog.progress.type.chrome", "Extension:Manager");
+pref("extensions.update.enabled", true);
+pref("extensions.update.interval", 86400);
+pref("extensions.dss.enabled", false);
+pref("extensions.dss.switchPending", false);
+pref("extensions.ignoreMTimeChanges", false);
+pref("extensions.logging.enabled", false);
+pref("general.skins.selectedSkin", "classic/1.0");
+// NB these point at addons.instantbird.org
+pref("extensions.update.enabled", false);
+pref("extensions.getMoreExtensionsURL", "http://addons.instantbird.org/%LOCALE%/%VERSION%/extensions/");
+pref("extensions.getMoreThemesURL", "http://addons.instantbird.org/%LOCALE%/%VERSION%/themes/");
+pref("extensions.getMorePluginsURL", "http://addons.instantbird.org/%LOCALE%/%VERSION%/plugins/");
+// suppress external-load warning for standard browser schemes
+pref("network.protocol-handler.warn-external.http", false);
+pref("network.protocol-handler.warn-external.https", false);
+pref("network.protocol-handler.warn-external.ftp", false);
+
+// don't load links inside Instantbird
+pref("network.protocol-handler.expose-all", false);
new file mode 100644
--- /dev/null
+++ b/im/app/profile/channel-prefs.js
@@ -0,0 +1,2 @@
+#filter substitution
+pref("app.update.channel", "@MOZ_UPDATE_CHANNEL@");
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/Makefile.in
@@ -0,0 +1,47 @@
+#
+# ***** 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.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+DEPTH = ../../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = {972ce4c6-7e08-4474-a285-3208198ce6fd}
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/installed-extensions.txt
@@ -0,0 +1,1 @@
+theme,{972ce4c6-7e08-4474-a285-3208198ce6fd}
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/Makefile.in
@@ -0,0 +1,57 @@
+#
+# ***** 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.org code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2001
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+DEPTH = ../../../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+include $(topsrcdir)/config/rules.mk
+
+DEFINES += -DTHUNDERBIRD_VERSION=$(THUNDERBIRD_VERSION)
+
+FILES := \
+ install.rdf \
+ $(NULL)
+
+libs::
+ $(PERL) $(MOZILLA_DIR)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $(srcdir)/install.rdf.in > install.rdf
+ $(INSTALL) $(FILES) $(DIST)/bin/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
+
+install::
+ $(SYSINSTALL) $(IFLAGS1) $(FILES) $(DESTDIR)$(mozappdir)/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}
new file mode 100644
--- /dev/null
+++ b/im/app/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf.in
@@ -0,0 +1,48 @@
+<?xml version="1.0"?>
+
+#filter substitution
+
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
+
+ <Description about="urn:mozilla:install-manifest">
+ <em:id>{972ce4c6-7e08-4474-a285-3208198ce6fd}</em:id>
+ <em:version>2.0</em:version>
+
+ <!-- Target Application this theme can install into,
+ with minimum and maximum supported versions. -->
+ <em:targetApplication>
+ <Description>
+ <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>
+ <em:minVersion>@THUNDERBIRD_VERSION@</em:minVersion>
+ <em:maxVersion>@THUNDERBIRD_VERSION@</em:maxVersion>
+ </Description>
+ </em:targetApplication>
+
+ <!-- Front End MetaData -->
+ <em:name>Thunderbird (default)</em:name>
+ <em:description>The default theme</em:description>
+
+ <!-- EXTENSION AUTHORS!
+ DO NOT COPY THIS PROPERTY INTO YOUR INSTALL RDF FILES
+ It will cause users not to be informed of incompatibilities
+ with your extension when they are updated with Software Update
+ and your extension will become unavailable to them!
+ -->
+ <em:appManaged>true</em:appManaged>
+
+ <em:locked>true</em:locked>
+
+ <!-- Front End Integration Hooks (used by Theme Manager)-->
+ <!-- XXXben - preprocess this file to use different info for mac version -->
+#ifdef XP_MACOSX
+ <em:creator>Kevin Gerich and Stephen Horlander</em:creator>
+#else
+ <em:creator>Arvid Axelsson</em:creator>
+#endif
+ <em:contributor>Mozilla Contributors</em:contributor>
+
+ <em:internalName>classic/1.0</em:internalName>
+ </Description>
+
+</RDF>
new file mode 100644
--- /dev/null
+++ b/im/app/profile/localstore.rdf
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<RDF:RDF
+ xmlns:NC="http://home.netscape.com/NC-rdf#"
+ xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+</RDF:RDF>
new file mode 100644
--- /dev/null
+++ b/im/app/profile/mimeTypes.rdf
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+
+<!--
+ This file is used as a persistent data store for helper application
+ information about both MIME type and protocol scheme helpers.
+
+ The root of the data are the two containers
+ <RDF:Seq about="urn:mimetypes:root"/> and <RDF:Seq about="urn:schemes:root"/>.
+
+ These contain one <RDF:li/> entry per MIME type/protocol. Each <RDF:li/> entry
+ corresponds to a "urn:<class>:<type>" resource, where <class> is either
+ "mimetype" or "scheme" and <type> is either a MIME type in "major/minor" format
+ or a scheme. For example, for HTML we would have "urn:mimetype:text/html",
+ while for mailto: we would have "urn:scheme:mailto".
+
+ Typically, this resource will be in the <RDF:Description/> node which has the
+ corresponding "about" attribute.
+
+ Each "urn:<class>:<type>" resource can have the following properties:
+
+ NC:Value - the MIME type or scheme string
+ NC:editable - a "true" or "false" depending on whether this entry is
+ editable
+ NC:description - a description of the type ("HTML Document" for text/html)
+ NC:fileExtensions - for MIME types, there will be one of these properties
+ per extension that corresponds to this MIME type,
+ each one having a single extension as its value.
+ NC:handlerProp - the way the type should be handled. This corresponds to a
+ "urn:<class>:handler:<type>" resource. Eg, the way HTML is
+ handled would be stored in the
+ "urn:mimetype:handler:text/html" resource.
+
+ Each "urn:<class>:handler:<type>" resource can have the following properties:
+
+ NC:useSystemDefault - "true" if we should handle per default OS setting,
+ "false" or not set otherwise
+ NC:saveToDisk - "true" if the data should be saved to disk, "false" or not
+ set otherwise.
+ (Note - if both of these are false, that means "open in helper app")
+ NC:alwaysAsk - "true" if the user should always be prompted before handling
+ data of this type, false otherwise.
+ NC:externalApplication - the preferred helper application to use for this
+ type. This corresponds to a
+ "urn:<class>:externalApplication:<type>" resource.
+ NC:possibleApplication - a helper application that can be used for this type.
+ Since there can be multiple possible applications,
+ there can be multiple assertions in the graph with
+ this property for a given handler resource.
+
+ Each "urn:<class>:externalApplication:<type>" resource, and each resource
+ that represents a possible application, can have the following property:
+
+ NC:prettyName - the "pretty name" of the application ("Acrobat Reader" for
+ /usr/bin/acroread, eg).
+
+ If the resource represents a local application, then it can have the following
+ property:
+
+ NC:path - the path to the application on the local filesystem, for example
+ /usr/bin/test or C:\windows\system32\cmd.exe.
+
+ If the resource represents a web application, then it can have the following
+ property:
+
+ NC:uriTemplate - a URI pointing to the web application to which the type
+ should be handed off, with %s in the template representing
+ the place where the content should be inserted. For example,
+ here is a URI template for a service that lets you email
+ an address in a mailto: link:
+ http://www.example.com/sendmail?link=%s
+-->
+
+<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:NC="http://home.netscape.com/NC-rdf#">
+
+ <RDF:Description about="urn:mimetypes">
+ <NC:MIME-types>
+ <RDF:Seq about="urn:mimetypes:root">
+ </RDF:Seq>
+ </NC:MIME-types>
+ </RDF:Description>
+</RDF:RDF>
new file mode 100644
--- /dev/null
+++ b/im/app/profile/prefs.js
@@ -0,0 +1,10 @@
+# Mozilla User Preferences
+
+/* Do not edit this file.
+ *
+ * If you make changes to this file while the browser is running,
+ * the changes will be overwritten when the browser exits.
+ *
+ * To make a manual change to preferences, you can visit the URL about:config
+ * For more information, see http://www.mozilla.org/unix/customizing.html#prefs
+ */
new file mode 100644
--- /dev/null
+++ b/im/app/splash.rc
@@ -0,0 +1,95 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* ***** 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 client code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Bill Law law@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 ***** */
+#include <windows.h>
+#include "nsNativeAppSupportWin.h"
+
+1 24 "instantbird.exe.manifest"
+
+// Program icon.
+IDI_APPLICATION ICON INSTANTBIRD_ICO
+
+STRINGTABLE DISCARDABLE
+BEGIN
+#ifdef DEBUG
+ IDS_STARTMENU_APPNAME, "Instantbird Debug"
+#else
+ IDS_STARTMENU_APPNAME, "Instantbird"
+#endif
+END
+
+#ifdef MOZ_STATIC_BUILD
+
+// XXX This code is copied from resource.h and widget.rc. It's a work-around
+// for the limitation that only one resource file can be used in an .exe. We
+// should develop a method, for static builds only, to combine multiple .rc
+// files into a single .rc file, and then use that to build the single .res
+// file for the .exe.
+
+#define IDC_GRAB 4101
+#define IDC_GRABBING 4102
+#define IDC_CELL 4103
+#define IDC_COPY 4104
+#define IDC_ALIAS 4105
+#define IDC_ZOOMIN 4106
+#define IDC_ZOOMOUT 4107
+#define IDC_COLRESIZE 4108
+#define IDC_ROWRESIZE 4109
+#define IDC_VERTICALTEXT 4110
+#define IDC_NONE 4112
+
+IDC_GRAB CURSOR DISCARDABLE "../../widget/src/build/res/grab.cur"
+IDC_GRABBING CURSOR DISCARDABLE "../../widget/src/build/res/grabbing.cur"
+IDC_CELL CURSOR DISCARDABLE "../../widget/src/build/res/cell.cur"
+IDC_COPY CURSOR DISCARDABLE "../../widget/src/build/res/copy.cur"
+IDC_ALIAS CURSOR DISCARDABLE "../../widget/src/build/res/aliasb.cur"
+IDC_ZOOMIN CURSOR DISCARDABLE "../../widget/src/build/res/zoom_in.cur"
+IDC_ZOOMOUT CURSOR DISCARDABLE "../../widget/src/build/res/zoom_out.cur"
+IDC_COLRESIZE CURSOR DISCARDABLE "../../widget/src/build/res/col_resize.cur"
+IDC_ROWRESIZE CURSOR DISCARDABLE "../../widget/src/build/res/row_resize.cur"
+IDC_VERTICALTEXT CURSOR DISCARDABLE "../../widget/src/build/res/vertical_text.cur"
+IDC_NONE CURSOR DISCARDABLE "../../widget/src/build/res/none.cur"
+
+// For some reason IDI_MAILBIFF needs to be larger than the value of IDI_APPLICATION for static builds
+#define IDI_MAILBIFF 101
+IDI_MAILBIFF ICON "../../mailnews/build/newmail.ico"
+
+#define IDI_APPICON 100
+IDI_APPICON ICON INSTANTBIRD_ICO
+
+#endif
+
new file mode 100644
--- /dev/null
+++ b/im/app/splashos2.rc
@@ -0,0 +1,78 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * ***** 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 client code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Bill Law law@netscape.com
+ * IBM Corp.
+ *
+ * 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 ***** */
+#include <os2.h>
+
+// Splash screen dialog ID.
+#define IDD_SPLASH 100
+
+// Splash screen bitmap ID.
+#define IDB_SPLASH 101
+
+ICON 1 "mozos2.ico"
+
+DLGTEMPLATE IDD_SPLASH DISCARDABLE
+BEGIN
+ DIALOG "", IDD_SPLASH, 0, 0, 390, 261, , FCF_BORDER
+ BEGIN
+ END
+END
+
+//BITMAP IDB_SPLASH "splash.bmp"
+
+#ifdef MOZ_STATIC_BUILD
+#include "wdgtos2rc.h"
+
+POINTER IDC_SELECTANCHOR "..\\..\\widget\\src\\os2\\res\\select.ptr"
+POINTER IDC_GRAB "..\\..\\widget\\src\\os2\\res\\grab.ptr"
+POINTER IDC_GRABBING "..\\..\\widget\\src\\os2\\res\\grabbing.ptr"
+POINTER IDC_CELL "..\\..\\widget\\src\\os2\\res\\cell.ptr"
+POINTER IDC_COPY "..\\..\\widget\\src\\os2\\res\\copy.ptr"
+POINTER IDC_ALIAS "..\\..\\widget\\src\\os2\\res\\aliasb.ptr"
+POINTER IDC_ZOOMIN "..\\..\\widget\\src\\os2\\res\\zoom_in.ptr"
+POINTER IDC_ZOOMOUT "..\\..\\widget\\src\\os2\\res\\zoom_out.ptr"
+
+POINTER IDC_ARROWWAIT "..\\..\\widget\\src\\os2\\res\\arrow_wait.ptr"
+POINTER IDC_CROSS "..\\..\\widget\\src\\os2\\res\\crosshair.ptr"
+POINTER IDC_HELP "..\\..\\widget\\src\\os2\\res\\help.ptr"
+POINTER IDC_NONE "..\\..\\widget\\src\\os2\\res\\none.ptr"
+
+ICON IDC_DNDURL "..\\..\\widget\\src\\os2\\res\\dndurl.ico"
+ICON IDC_DNDTEXT "..\\..\\widget\\src\\os2\\res\\dndtext.ico"
+#endif
new file mode 100644
--- /dev/null
+++ b/im/base/Makefile.in
@@ -0,0 +1,46 @@
+# ***** 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 the Mozilla Browser code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2002
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+DEPTH = ../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+DIRS = content
+
+include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/im/base/content/Makefile.in
@@ -0,0 +1,44 @@
+# ***** 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 the Mozilla Browser code.
+#
+# The Initial Developer of the Original Code is
+# Netscape Communications Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2002
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+#
+# 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 *****
+
+DEPTH = ../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+include $(topsrcdir)/config/rules.mk
new file mode 100755
index 0000000000000000000000000000000000000000..a780410e0cbbac4cd8ec93416844f02d9bb87ef1
GIT binary patch
literal 18336
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
new file mode 100644
index 0000000000000000000000000000000000000000..94d9124a3500e9b495b89a6a20d92085f53444d8
GIT binary patch
literal 764
zc%17D@N?(olHy`uVBq!ia0y~yVAKJ!jX2nV<g;tfw15;#x}&cn1H<|g=B!;Wfqcml
z*NBqf{Irtt#G+IN$CUh}R0Yr6#Prml)Wnp^!jq{s3=B+to-U3d6}OW9{Qqx%SVMw!
zae@dBD}#W8&tgXdF1Ldk5?Txj4Q||P0zte9j0}t>Q3<_GKwcXU1IL1kOxYqmKwb)i
z14FM^1W<ENlOi(%Q^uA9QedMbfkrK6y#_Y;1VaOZl<o$Qp{&kq3@ifN0>=Gp5KA?H
za!HMk0wH#O!DFXFK;ls=DITy@3mMR?TENtuYa#)$fsujbLIyXI`?eujz2ZQUJZ~G=
zf&gGxn%p{s<X&BB`IbpELT2$nh@ZGXeu_rc)M^TrFhck2EmaxpZo%nD6bT%meIcU}
zhkYns^wvPqfg|)Tya@e@!ynN&LPaOQ2CRs+Sq_g=*cdDrS=LMPcuxl=Uj|QCKbLh*
G2~7Z!QPtW2
new file mode 100755
index 0000000000000000000000000000000000000000..39ea12cd9327d14ed0ffff9f62d2d857b102e516
GIT binary patch
literal 43236
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%0AH2-oy>dxe@?m*Nh!Y!HR72^TsL&&^v>$#!
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
new file mode 100644
index 0000000000000000000000000000000000000000..4463dce379745d2ecf3de0468a59d5977f404110
GIT binary patch
literal 7513
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
new file mode 100644
--- /dev/null
+++ b/im/base/content/debug/debug.js
@@ -0,0 +1,64 @@
+const errorConsoleWindow = "chrome://global/content/console.xul";
+const configWindow = "chrome://global/content/config.xul";
+
+// For Venkman
+
+function toOpenWindowByType(inType, uri) {
+ var winopts = "chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar";
+ window.open(uri, "_blank", winopts);
+}
+
+// End { For Venkman }
+
+var debug = {
+ errors: function debug_errors() {
+ if (!menus.focus("global:console"))
+ window.open(errorConsoleWindow, "Errors",
+ "chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar");
+ },
+
+ config: function debug_config() {
+ if (!menus.focus("Preferences:ConfigManager"))
+ window.open(configWindow, "Config",
+ "chrome,resizable");
+ },
+
+ venkman: function debug_venkman() {
+ start_venkman();
+ }
+};
+
+function debug_enumerateProtocols()
+{
+ dump("trying to enumerate protocols:\n");
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ for (let proto in getIter(pcs.getProtocols, Ci.purpleIProtocol)) {
+ dump(" " + proto.name + " " + proto.id + "\n");
+ for (let opt in getIter(proto.getOptions, Ci.purpleIPref)) {
+ var type = { };
+ type[opt.typeBool] = ["bool", opt.getBool];
+ type[opt.typeInt] = ["int", opt.getInt];
+ type[opt.typeString] = ["string", opt.getString];
+ dump(" ("+ type[opt.type][0] + ") " +
+ opt.name + (opt.masked ? "(masked)" : "") + "\t" +
+ type[opt.type][1]() + "\n");
+ }
+ }
+}
+
+function debug_connectAccount(aProto, aName, aPassword)
+{
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+
+ var proto = pcs.getProtocolById(aProto);
+ if (!proto)
+ throw "Couldn't get protocol " + aProto;
+
+ var acc = pcs.createAccount(aName, proto);
+ acc.password = aPassword;
+ dump("trying to connect to " + proto.name +
+ " (" + proto.id + ") with " + aName + "\n");
+ acc.connect();
+}
new file mode 100644
--- /dev/null
+++ b/im/base/content/debug/debug.xul
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<overlay id="debug"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/x-javascript" src="chrome://debug/content/debug.js"/>
+ <script src="chrome://venkman/content/venkman-overlay.js"/>
+
+ <menubar id="blistMenubar">
+ <menu label="Debug" id="debugMenu" insertafter="toolsMenu">
+ <menupopup>
+ <menuitem id="errorConsoleMenuItem" label="Error Console" oncommand="debug.errors()"/>
+ <menuitem id="venkmanMenuItem" label="Venkman" oncommand="debug.venkman()"/>
+ <menuseparator/>
+ <menuitem id="configMenuItem" label="about:config" oncommand="debug.config()"/>
+ </menupopup>
+ </menu>
+ </menubar>
+</overlay>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/aboutDialog.css
@@ -0,0 +1,66 @@
+#aboutDialog {
+ padding: 0px 0px 10px 0px;
+}
+
+#modes {
+ min-height: 380px;
+}
+
+#clientBox {
+ background-color: #FFFFFF;
+ background-image: url("chrome://branding/content/about-logo.png");
+ background-repeat: no-repeat;
+ padding-top: 220px;
+ color: #000000;
+}
+
+#versionWrapper {
+ margin: 0px 0px 3px 20px;
+}
+
+#versionField {
+ background-color: #FFFFFF;
+ -moz-appearance: none;
+ border: none;
+ font-weight: bold;
+ color: #909090;
+}
+
+#geckoVersionField,
+#libpurpleVersionField {
+ background-color: #FFFFFF;
+ -moz-appearance: none;
+ border: none;
+ color: #909090;
+ padding-top: 3px !important;
+ padding-left: 10px !important;
+}
+
+#copyright {
+ margin: 10px 20px 3px 20px;
+}
+
+#userAgentField {
+ margin: 0px 0px 3px 20px !important;
+ background-color: #FFFFFF;
+ -moz-appearance: none;
+ border: none;
+}
+
+#groove {
+ margin-top: 0px;
+}
+
+#creditsIframe {
+ cursor: default;
+ -moz-user-select: none;
+}
+
+button[dlgtype="extra2"] {
+ margin-left: 13px;
+}
+
+button[dlgtype="accept"] {
+ margin-right: 13px;
+}
+
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/aboutDialog.xul
@@ -0,0 +1,148 @@
+<?xml version="1.0"?> <!-- -*- Mode: HTML -*- -->
+<!--
+# ***** 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 Thunderbird about dialog.
+#
+# The Initial Developer of the Original Code is
+# Blake Ross (blaker@netscape.com).
+# Portions created by the Initial Developer are Copyright (C) 2002
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Florian Quèze <florian@instantbird.org>
+#
+# 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://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/aboutDialog.css" type="text/css"?>
+
+<!DOCTYPE window [
+<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+%brandDTD;
+<!ENTITY % aboutDialogDTD SYSTEM "chrome://instantbird/locale/aboutDialog.dtd" >
+%aboutDialogDTD;
+]>
+
+<dialog xmlns:html="http://www.w3.org/1999/xhtml"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ id="aboutDialog"
+ windowtype="Messenger:About"
+ buttons="accept,extra2"
+ onload="onLoad();"
+ title="&aboutDialog.title;" creditslabel="&credits.label;" creditsaccesskey="&credits.accesskey;"
+ aboutlabel="&aboutLink.label;" aboutaccesskey="&aboutLink.accesskey;" versionlabel="&aboutVersion;"
+ style="width: 299px; height: 330px;">
+
+ <script type="application/x-javascript">
+ <![CDATA[
+ var gSelectedPage;
+
+ function onLoad() {
+ var xai = Components.classes["@mozilla.org/xre/app-info;1"]
+ .getService(Components.interfaces.nsIXULAppInfo);
+
+ var versionField = document.getElementById("versionField");
+ versionField.value = versionField.value + xai.version
+ + ' (' + xai.appBuildID + ')';
+
+ versionField = document.getElementById("geckoVersionField");
+ versionField.value = versionField.value + xai.platformVersion
+ + ' (' + xai.platformBuildID + ')';
+
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Components.interfaces.purpleICoreService)
+ versionField = document.getElementById("libpurpleVersionField");
+ versionField.value = versionField.value + pcs.version;
+
+ versionField = document.getElementById("userAgentField");
+ versionField.value = navigator.userAgent;
+
+ var button = document.documentElement.getButton("extra2");
+ button.setAttribute("label", document.documentElement.getAttribute("creditslabel"));
+ button.setAttribute("accesskey", document.documentElement.getAttribute("creditsaccesskey"));
+ gSelectedPage = 0;
+ button.addEventListener("command", switchPage, false);
+ document.documentElement.getButton("accept").focus();
+ }
+
+ function uninit(aEvent)
+ {
+ if (aEvent.target != document)
+ return;
+ var iframe = document.getElementById("creditsIframe");
+ iframe.setAttribute("src", "");
+ }
+
+ function switchPage(aEvent)
+ {
+ var button = aEvent.target;
+ if (button.localName != "button")
+ return;
+
+ var iframe = document.getElementById("creditsIframe");
+ if (gSelectedPage == 0) {
+ iframe.setAttribute("src", "chrome://instantbird/content/credits.xhtml");
+ button.setAttribute("label", document.documentElement.getAttribute("aboutlabel"));
+ button.setAttribute("accesskey", document.documentElement.getAttribute("aboutaccesskey"));
+ gSelectedPage = 1;
+ }
+ else {
+ iframe.setAttribute("src", "");
+ button.setAttribute("label", document.documentElement.getAttribute("creditslabel"));
+ button.setAttribute("accesskey", document.documentElement.getAttribute("creditsaccesskey"));
+ gSelectedPage = 0;
+ }
+ var modes = document.getElementById("modes");
+ modes.setAttribute("selectedIndex", gSelectedPage);
+ }
+ ]]>
+ </script>
+
+ <deck id="modes" flex="1">
+ <vbox flex="1" id="clientBox">
+ <vbox id="versionWrapper" flex="1">
+ <textbox id="versionField" readonly="true" class="plain" tabindex="2"
+ value="&aboutVersion; "/>
+ <textbox id="geckoVersionField" readonly="true" class="plain"
+ tabindex="3" value="&geckoVersion; "/>
+ <textbox id="libpurpleVersionField" readonly="true" class="plain"
+ tabindex="4" value="&libpurpleVersion; "/>
+ </vbox>
+ <description id="copyright" flex="1">©rightText;</description>
+ <separator/>
+ <textbox id="userAgentField" readonly="true" class="plain"
+ tabindex="5" multiline="true"/>
+ </vbox>
+
+ <vbox flex="1" id="creditsBox">
+ <html:iframe style="border: 0px;" id="creditsIframe" flex="1"/>
+ </vbox>
+ </deck>
+
+ <separator class="groove" id="groove"/>
+
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/account.js
@@ -0,0 +1,202 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+const autoJoinPref = "autoJoin";
+
+var account = {
+ onload: function account_onload() {
+ this.account = window.arguments[0];
+ this.proto = this.account.protocol;
+ document.getElementById("accountName").value = this.account.name;
+ document.getElementById("protocolName").value = this.proto.name;
+ document.getElementById("protocolIcon").src =
+ "chrome://instantbird/skin/prpl/" + this.proto.id + "-48.png"
+
+ if (this.proto.noPassword)
+ document.getElementById("passwordBox").hidden = true;
+ else
+ document.getElementById("password").value = this.account.password;
+
+ document.getElementById("alias").value = this.account.alias;
+
+ this.prefService = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Ci.nsIPrefService);
+ if (this.proto.id == "prpl-irc") {
+ document.getElementById("optionalSeparator").hidden = false;
+ document.getElementById("autojoinBox").hidden = false;
+ var branch = this.prefService.getBranch("messenger.account." +
+ this.account.id + ".");
+ if (branch.prefHasUserValue(autoJoinPref)) {
+ document.getElementById("autojoin").value =
+ branch.getCharPref(autoJoinPref);
+ }
+ }
+
+/* FIXME
+ document.getElementById("newMailNotification").hidden =
+ !this.proto.newMailNotification;
+*/
+
+ this.prefs = this.prefService.getBranch("messenger.account." +
+ this.account.id + ".options.");
+ this.populateProtoSpecificBox();
+ },
+
+ createTextbox: function account_createTextbox(aType, aValue, aLabel, aName) {
+ var box = document.createElement("vbox");
+
+ var label = document.createElement("label");
+ label.setAttribute("value", aLabel);
+ label.setAttribute("control", aName);
+ box.appendChild(label);
+
+ var textbox = document.createElement("textbox");
+ if (aType)
+ textbox.setAttribute("type", aType);
+ textbox.setAttribute("value", aValue);
+ textbox.setAttribute("id", aName);
+
+ box.appendChild(textbox);
+ return box;
+ },
+
+ getBool: function account_getBool(aOpt) {
+ if (this.prefs.prefHasUserValue(aOpt.name))
+ return this.prefs.getBoolPref(aOpt.name);
+
+ return aOpt.getBool();
+ },
+
+ getInt: function account_getInt(aOpt) {
+ if (this.prefs.prefHasUserValue(aOpt.name))
+ return this.prefs.getIntPref(aOpt.name);
+
+ return aOpt.getInt();
+ },
+
+ getString: function account_getString(aOpt) {
+ if (this.prefs.prefHasUserValue(aOpt.name))
+ return this.prefs.getCharPref(aOpt.name);
+
+ return aOpt.getString();
+ },
+
+ populateProtoSpecificBox: function account_populate() {
+ var gbox = document.getElementById("protoSpecific");
+ var bundle = document.getElementById("prplbundle");
+ var id = this.proto.id;
+ for (let opt in this.getProtoOptions()) {
+ var text = bundle.getString(id + "." + opt.name);
+ var name = id + "-" + opt.name;
+ switch (opt.type) {
+ case opt.typeBool:
+ var chk = document.createElement("checkbox");
+ if (this.getBool(opt))
+ chk.setAttribute("checked", "true");
+ chk.setAttribute("label", text);
+ chk.setAttribute("id", name);
+ gbox.appendChild(chk);
+ break;
+ case opt.typeInt:
+ gbox.appendChild(this.createTextbox("number", this.getInt(opt),
+ text, name));
+ break;
+ case opt.typeString:
+ gbox.appendChild(this.createTextbox(null, this.getString(opt),
+ text, name));
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ }
+ },
+
+ getValue: function account_getValue(aId) {
+ var elt = document.getElementById(aId);
+ if ("checked" in elt)
+ return elt.checked;
+ return elt.value;
+ },
+
+ save: function account_create() {
+ var password = this.getValue("password");
+ if (password != this.account.password)
+ this.account.password = password;
+
+ //acc.rememberPassword = this.getValue("rememberPassword");
+
+ var alias = this.getValue("alias");
+ if (alias != this.account.alias)
+ this.account.alias = alias;
+
+ if (this.proto.id == "prpl-irc") {
+ var branch = this.prefService.getBranch("messenger.account." +
+ this.account.id + ".");
+ var autojoin = this.getValue("autojoin");
+ if (autojoin || branch.prefHasUserValue(autoJoinPref))
+ branch.setCharPref(autoJoinPref, autojoin);
+ }
+
+ for (let opt in this.getProtoOptions()) {
+ var name = this.proto.id + "-" + opt.name;
+ var val = this.getValue(name);
+ switch (opt.type) {
+ case opt.typeBool:
+ if (val != this.getBool(opt))
+ this.account.setBool(opt.name, val);
+ break;
+ case opt.typeInt:
+ if (val != this.getInt(opt))
+ this.account.setInt(opt.name, val);
+ break;
+ case opt.typeString:
+ if (val != this.getString(opt))
+ this.account.setString(opt.name, val);
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ }
+ },
+
+ getProtocols: function account_getProtocols() {
+ return getIter(this.pcs.getProtocols, Ci.purpleIProtocol);
+ },
+ getProtoOptions: function account_getProtoOptions() {
+ return getIter(this.proto.getOptions, Ci.purpleIPref);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/account.xml
@@ -0,0 +1,230 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+
+<!DOCTYPE bindings [
+ <!ENTITY % accountsDTD SYSTEM "chrome://instantbird/locale/accounts.dtd">
+ %accountsDTD;
+]>
+
+<bindings id="accountBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="account" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:vbox flex="1">
+ <xul:hbox flex="1">
+ <xul:vbox flex="1">
+
+ <xul:hbox class="accountNameBox">
+ <xul:label value="&account.name;" class="accountNameLabel"/>
+ <xul:label flex="1" xbl:inherits="value=name"
+ class="accountName"/>
+ </xul:hbox>
+ <xul:hbox class="accountAliasBox">
+ <xul:label value="&account.alias;"/>
+ <xul:label flex="1" xbl:inherits="value=alias"
+ class="accountAlias"/>
+ </xul:hbox>
+ <xul:label class="connecting" anonid="connecting" value="&account.connecting;"/>
+ <xul:label class="connected" value="&account.connected;"/>
+ <xul:label class="disconnecting" value="&account.disconnecting;"/>
+ <xul:label class="disconnected" value="&account.disconnected;"/>
+ <xul:description class="error" anonid="error"/>
+ <xul:spacer flex="1"/>
+ </xul:vbox>
+ <xul:vbox align="center">
+ <xul:image xbl:inherits="src=prplicon" class="accountIcon"/>
+ <xul:image xbl:inherits="src=prplicon" class="accountIconAnim"
+ anonid="prplicon"/>
+ <xul:label xbl:inherits="value=protocol" class="prplName"/>
+ </xul:vbox>
+ </xul:hbox>
+ <xul:hbox flex="1" class="account-buttons">
+ <xul:checkbox label="&account.autoSignOn;"
+ xbl:inherits="checked=autologin"
+ oncommand="gAccountManager.autologin()"/>
+ <xul:spacer flex="1"/>
+ <xul:button class="disconnectButton"
+ label="&account.disconnect.label;"
+ accesskey="&account.disconnect.accesskey;"
+ oncommand="gAccountManager.disconnect()"/>
+ <xul:button class="connectButton"
+ label="&account.connect.label;"
+ accesskey="&account.connect.accesskey;"
+ oncommand="gAccountManager.connect()"/>
+ <xul:button label="&account.delete.label;"
+ accesskey="&account.delete.accesskey;"
+ oncommand="gAccountManager.delete()"/>
+ <xul:button label="&account.edit.label;"
+ accesskey="&account.edit.accesskey;"
+ oncommand="gAccountManager.edit()"/>
+ </xul:hbox>
+ </xul:vbox>
+ </content>
+ <implementation>
+ <method name="build">
+ <parameter name="aAccount"/>
+ <body>
+ <![CDATA[
+ this._account = aAccount;
+ this.setAttribute("name", aAccount.name);
+ this.setAttribute("id", aAccount.id);
+ var alias = aAccount.alias;
+ if (alias)
+ this.setAttribute("alias", alias);
+ else
+ this.removeAttribute("alias");
+ var proto = aAccount.protocol;
+ this.setAttribute("protocol", proto.name);
+ this.setAttribute("prplicon", "chrome://instantbird/skin/prpl/" +
+ proto.id + "-32.png");
+ var state = "Unknown";
+ if (this._account.connected) {
+ state = "connected"
+ } else if (this._account.disconnected) {
+ state = "disconnected"
+ if (this._account.connectionStateMsg)
+ this.updateConnectionState(true);
+ } else if (this._account.connecting) {
+ state = "connecting"
+ document.getAnonymousElementByAttribute(this, "anonid", "prplicon").animate();
+ this.updateConnectionState(false);
+ } else if (this._account.disconnecting) {
+ state = "connected"
+ }
+ //dump("state = " + state + "\n");
+ this.setAttribute("state", state);
+ this.autoLogin = aAccount.autoLogin;
+ ]]>
+ </body>
+ </method>
+
+ <method name="connect">
+ <body>
+ <![CDATA[
+ if (this._account.disconnected)
+ this._account.connect();
+ ]]>
+ </body>
+ </method>
+
+ <method name="disconnect">
+ <body>
+ <![CDATA[
+ var acc = this._account;
+ if (acc.connected || acc.connecting)
+ this._account.disconnect();
+ ]]>
+ </body>
+ </method>
+
+ <method name="delete">
+ <body>
+ <![CDATA[
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ pcs.deleteAccount(this._account.id);
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateConnectionState">
+ <parameter name="aIsError"/>
+ <body>
+ <![CDATA[
+ var bundle = document.getElementById("accountsBundle");
+ var key = aIsError ? "account.connection.error"
+ : "account.connection.progress";
+ var text = this._account.connectionStateMsg;
+ text = text ? bundle.getFormattedString(key, [text])
+ : bundle.getString("account.connecting");
+
+ if (aIsError) {
+ this.setAttribute("error", "true");
+ var error = document.getAnonymousElementByAttribute(this, "anonid", "error");
+ setText(error, text);
+ }
+ else {
+ var progress = document.getAnonymousElementByAttribute(this, "anonid", "connecting");
+ progress.setAttribute("value", text);
+ }
+ ]]>
+ </body>
+ </method>
+
+ <property name="autoLogin">
+ <getter>
+ <![CDATA[
+ return this.hasAttribute("autologin");
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ if (val)
+ this.setAttribute("autologin", "true");
+ else
+ this.removeAttribute("autologin");
+ if (this._account.autoLogin != val)
+ this._account.autoLogin = val;
+ return val;
+ ]]>
+ </setter>
+ </property>
+
+ <property name="account">
+ <getter>
+ <![CDATA[
+ return this._account;
+ ]]>
+ </getter>
+ </property>
+
+ </implementation>
+ <handlers>
+ <handler event="dblclick">
+ <![CDATA[
+ gAccountManager.edit();
+ event.stopPropagation();
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/account.xul
@@ -0,0 +1,103 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/account.css" type="text/css"?>
+
+<!DOCTYPE window SYSTEM "chrome://instantbird/locale/account.dtd">
+
+<dialog
+ id = "account"
+ title = "&accountWindow.title;"
+ buttons= "accept,cancel"
+ width = "300"
+ height = "400"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload = "account.onload()"
+ ondialogaccept="account.save()">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/account.js"/>
+
+ <stringbundle id="prplbundle" src="chrome://instantbird/locale/prpl.properties"/>
+
+ <hbox>
+ <image id="protocolIcon"/>
+ <vbox>
+ <label id="accountName" class="header"/>
+ <label id="protocolName"/>
+ </vbox>
+ </hbox>
+ <separator/>
+
+ <tabbox flex="1">
+ <tabs id="tabs">
+ <tab id="generalTab" label="&account.general;"/>
+ <tab id="advancedTab" label="&account.advanced;"/>
+ </tabs>
+ <tabpanels id="panels" flex="1">
+ <tabpanel orient="vertical" flex="1" style="overflow:auto;">
+ <hbox id="passwordBox" equalsize="always" align="baseline">
+ <label value="&account.password;" control="password" flex="1"/>
+ <textbox id="password" flex="1" type="password"/>
+ </hbox>
+ <checkbox id="rememberPassword" label="&account.rememberPassword;" hidden="true"/>
+
+ <separator class="groove"/>
+
+ <hbox id="aliasBox" equalsize="always" align="baseline">
+ <label value="&account.alias;" control="alias" flex="1"/>
+ <textbox id="alias" flex="1"/>
+ </hbox>
+
+ <separator class="groove" hidden="true" id="optionalSeparator"/>
+
+ <checkbox id="newMailNotification" label="&account.newMailNotification;" hidden="true"/>
+
+ <vbox id="autojoinBox" hidden="true">
+ <label value="&account.autojoin;" control="autojoin" flex="1"/>
+ <textbox id="autojoin" flex="1"/>
+ </vbox>
+ </tabpanel>
+
+ <tabpanel id="advanced" flex="1" style="overflow:auto;">
+ <vbox id="protoSpecific" flex="1"/>
+ </tabpanel>
+
+ </tabpanels>
+ </tabbox>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/accountWizard.js
@@ -0,0 +1,292 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+
+var accountWizard = {
+ onload: function aw_onload() {
+ var protoList = document.getElementById("protolist");
+ this.pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ for (let proto in this.getProtocols()) {
+ var id = proto.id;
+ var item = protoList.appendItem(proto.name, id, id);
+ item.setAttribute("image", "chrome://instantbird/skin/prpl/" + id + ".png");
+ item.setAttribute("class", "listitem-iconic");
+ }
+ // there is a strange selection bug without this timeout
+ setTimeout(function() {
+ protoList.selectedIndex = 0;
+ }, 0);
+ },
+
+ checkUsername: function aw_checkUsername() {
+ var wizard = document.getElementById("accountWizard");
+ var input = document.getElementById("name");
+ wizard.canAdvance = input.value.length > 0;
+ },
+
+ selectProtocol: function aw_selectProtocol() {
+ var protoList = document.getElementById("protolist");
+ var id = protoList.selectedItem.value;
+ this.proto = this.pcs.getProtocolById(id);
+
+ return true;
+ },
+
+ showUsernamePage: function aw_showUsernamePage() {
+ this.checkUsername();
+ var proto = this.proto.id;
+ document.getElementById("jabberusername").hidden = proto != "prpl-jabber";
+ document.getElementById("ircusername").hidden = proto != "prpl-irc";
+ },
+
+ hideUsernamePage: function aw_hideUsernamePage() {
+ document.getElementById("accountWizard").canAdvance = true;
+ var next = "account" +
+ (this.proto.noPassword ? "alias" : "password");
+ document.getElementById("accountusername").next = next;
+ },
+
+ showAdvanced: function aw_showAdvanced() {
+ // ensure we don't destroy user data if it's not necessary
+ var id = this.proto.id;
+ if (this.protoSpecOptId == id)
+ return;
+ this.protoSpecOptId = id;
+
+/* FIXME
+ document.getElementById("newMailNotification").hidden =
+ !this.proto.newMailNotification;
+*/
+ this.populateProtoSpecificBox();
+ },
+
+ createTextbox: function aw_createTextbox(aType, aValue, aLabel, aName) {
+ var box = document.createElement("hbox");
+ box.setAttribute("align", "baseline");
+ box.setAttribute("equalsize", "always");
+
+ var label = document.createElement("label");
+ label.setAttribute("value", aLabel);
+ label.setAttribute("control", aName);
+ box.appendChild(label);
+
+ var textbox = document.createElement("textbox");
+ if (aType)
+ textbox.setAttribute("type", aType);
+ textbox.setAttribute("value", aValue);
+ textbox.setAttribute("id", aName);
+ textbox.setAttribute("flex", "1");
+
+ box.appendChild(textbox);
+ return box;
+ },
+
+ populateProtoSpecificBox: function aw_populate() {
+ var id = this.proto.id;
+ var box = document.getElementById("protoSpecific");
+ var bundle = document.getElementById("prplbundle");
+ var child;
+ while (child = box.firstChild)
+ box.removeChild(child);
+ for (let opt in this.getProtoOptions()) {
+ var text = bundle.getString(id + "." + opt.name);
+ var name = id + "-" + opt.name;
+ switch (opt.type) {
+ case opt.typeBool:
+ var chk = document.createElement("checkbox");
+ if (opt.getBool())
+ chk.setAttribute("checked", "true");
+ chk.setAttribute("label", text);
+ chk.setAttribute("id", name);
+ box.appendChild(chk);
+ break;
+ case opt.typeInt:
+ box.appendChild(this.createTextbox("number", opt.getInt(),
+ text, name));
+ break;
+ case opt.typeString:
+ box.appendChild(this.createTextbox(null, opt.getString(),
+ text, name));
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ }
+ },
+
+ createSummaryRow: function aw_createSummaryRow(aLabel, aValue) {
+ var row = document.createElement("row");
+ row.setAttribute("align", "baseline");
+
+ var label = document.createElement("label");
+ label.setAttribute("class", "header");
+ if (aLabel.length > 20) {
+ aLabel = aLabel.substring(0, 20);
+ aLabel += "...";
+ }
+ label.setAttribute("value", aLabel);
+ row.appendChild(label);
+
+ var textbox = document.createElement("textbox");
+ textbox.setAttribute("value", aValue);
+ textbox.setAttribute("class", "plain");
+ textbox.setAttribute("readonly", true);
+ row.appendChild(textbox);
+
+ return row;
+ },
+
+ showSummary: function aw_showSummary() {
+ var rows = document.getElementById("summaryRows");
+ var bundle = document.getElementById("prplbundle");
+ var child;
+ while (child = rows.firstChild)
+ rows.removeChild(child);
+
+ var label = document.getElementById("protoLabel").value;
+ rows.appendChild(this.createSummaryRow(label, this.proto.name));
+ this.username = this.getValue("name");
+ label = document.getElementById("nameLabel").value;
+ rows.appendChild(this.createSummaryRow(label, this.username));
+ if (!this.proto.noPassword) {
+ this.password = this.getValue("password");
+ label = document.getElementById("passwordLabel").value;
+ var pass = "";
+ for (let i = 0; i < this.password.length; ++i)
+ pass += "*";
+ rows.appendChild(this.createSummaryRow(label, pass));
+ }
+ this.alias = this.getValue("alias");
+ if (this.alias) {
+ label = document.getElementById("aliasLabel").value;
+ rows.appendChild(this.createSummaryRow(label, this.alias));
+ }
+
+/* FIXME
+ if (this.proto.newMailNotification)
+ rows.appendChild(this.createSummaryRow("Notify of new mails:",
+ this.getValue("newMailNotification")));
+*/
+
+ var id = this.proto.id;
+ this.prefs = [ ];
+ for (let opt in this.getProtoOptions()) {
+ let name = opt.name;
+ let val = this.getValue(id + "-" + name);
+ switch (opt.type) {
+ case opt.typeBool:
+ if (val != opt.getBool())
+ this.prefs.push({opt: opt, name: name, value: val});
+ break;
+ case opt.typeInt:
+ if (val != opt.getInt())
+ this.prefs.push({opt: opt, name: name, value: val});
+ break;
+ case opt.typeString:
+ if (val != opt.getString())
+ this.prefs.push({opt: opt, name: name, value: val});
+ break;
+ default:
+ throw "unknown preference type " + opt.type;
+ }
+ }
+
+ for (let i = 0; i < this.prefs.length; ++i) {
+ let opt = this.prefs[i];
+ let text = bundle.getString(id + "." + opt.name);
+ rows.appendChild(this.createSummaryRow(text, opt.value));
+ }
+ },
+
+ createAccount: function aw_createAccount() {
+ var acc = this.pcs.createAccount(this.username, this.proto.id);
+ if (!this.proto.noPassword) {
+ acc.password = this.password;
+ acc.rememberPassword = true;
+ }
+ if (this.alias)
+ acc.alias = this.alias;
+ //FIXME: newMailNotification
+
+ for (let i = 0; i < this.prefs.length; ++i) {
+ let option = this.prefs[i];
+ let opt = option.opt;
+ switch(opt.type) {
+ case opt.typeBool:
+ acc.setBool(option.name, option.value);
+ break;
+ case opt.typeInt:
+ acc.setInt(option.name, option.value);
+ break;
+ case opt.typeString:
+ acc.setString(option.name, option.value);
+ break;
+ default:
+ throw "unknown type";
+ }
+ }
+ var autologin = this.getValue("connectNow");
+ acc.autoLogin = autologin;
+ acc.save();
+
+ if (autologin)
+ acc.connect();
+
+ if (window.opener) {
+ var am = window.opener.gAccountManager;
+ if (am)
+ am.selectAccount(acc.id);
+ }
+
+ return true;
+ },
+
+ getValue: function aw_getValue(aId) {
+ var elt = document.getElementById(aId);
+ if ("checked" in elt)
+ return elt.checked;
+ return elt.value;
+ },
+
+ getProtocols: function aw_getProtocols() {
+ return getIter(this.pcs.getProtocols, Ci.purpleIProtocol);
+ },
+ getProtoOptions: function aw_getProtoOptions() {
+ return getIter(this.proto.getOptions, Ci.purpleIPref);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/accountWizard.xul
@@ -0,0 +1,131 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/accountWizard.css" type="text/css"?>
+
+<!DOCTYPE wizard SYSTEM "chrome://instantbird/locale/accountWizard.dtd">
+
+<wizard id="accountWizard" title="&windowTitle.label;"
+ onwizardfinish="return accountWizard.createAccount();"
+ onload="accountWizard.onload();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/accountWizard.js"/>
+ <stringbundle id="prplbundle" src="chrome://instantbird/locale/prpl.properties"/>
+
+ <wizardpage id="accountwelcome" pageid="accountwelcome" next="accountprotocol"
+ label="&accountWelcomeTitle.label;">
+ <description>&accountWelcomeInfo.label;</description>
+ <separator/>
+ </wizardpage>
+
+ <wizardpage id="accountprotocol" pageid="accountprotocol" next="accountusername"
+ label="&accountProtocolTitle.label;"
+ onpageadvanced="return accountWizard.selectProtocol();">
+ <description>&accountProtocolInfo.label;</description>
+ <separator/>
+ <label value="&accountProtocolField.label;" control="protolist"
+ id="protoLabel" hidden="true"/>
+ <listbox flex="1" id="protolist"/>
+ </wizardpage>
+
+ <wizardpage id="accountusername" pageid="accountusername" next="accountpassword"
+ label="&accountUsernameTitle.label;"
+ onpageshow="accountWizard.showUsernamePage();"
+ onpagehide="accountWizard.hideUsernamePage();">
+ <description>&accountUsernameInfo.label;</description>
+ <separator/>
+ <hbox id="nameBox" align="baseline">
+ <label value="&accountUsernameField.label;" control="name" id="nameLabel"/>
+ <textbox id="name" oninput="accountWizard.checkUsername();"/>
+ </hbox>
+ <separator/>
+ <description id="jabberusername" hidden="true">&accountUsernameJabberInfo.label;</description>
+ <description id="ircusername" hidden="true">&accountUsernameIrcInfo.label;</description>
+ </wizardpage>
+
+ <wizardpage id="accountpassword" pageid="accountpassword" next="accountalias"
+ label="&accountPasswordTitle.label;">
+ <description>&accountPasswordInfo.label;</description>
+ <separator/>
+ <hbox id="passwordBox" align="baseline">
+ <label value="&accountPasswordField.label;" control="password" id="passwordLabel"/>
+ <textbox id="password" type="password"/>
+ </hbox>
+ </wizardpage>
+
+ <wizardpage id="accountalias" pageid="accountalias" next="accountadvanced"
+ label="&accountAliasTitle.label;">
+ <description>&accountAliasInfo.label;</description>
+ <separator/>
+ <hbox id="aliasBox" align="baseline">
+ <label value="&accountAliasField.label;" control="alias" id="aliasLabel"/>
+ <textbox id="alias"/>
+ </hbox>
+ </wizardpage>
+
+ <wizardpage id="accountadvanced" pageid="accountadvanced" next="accountsummary"
+ label="&accountAdvancedTitle.label;"
+ onpageshow="accountWizard.showAdvanced();">
+ <description>&accountAdvancedInfo.label;</description>
+ <separator/>
+ <checkbox id="newMailNotification"
+ label="&accountAdvanced.newMailNotification.label;" hidden="true"/>
+ <vbox id="protoSpecific" flex="1"/>
+ </wizardpage>
+
+ <wizardpage id="accountsummary" pageid="accountsummary"
+ label="&accountSummaryTitle.label;"
+ onpageshow="accountWizard.showSummary();">
+ <description>&accountSummaryInfo.label;</description>
+ <separator/>
+ <grid flex="1" style="overflow:auto;">
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows id="summaryRows"/>
+ </grid>
+ <separator/>
+ <checkbox id="connectNow" label= "&accountSummary.connectNow.label;" checked="true"/>
+ </wizardpage>
+
+</wizard>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/accounts.css
@@ -0,0 +1,59 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+richlistitem {
+ -moz-binding: url("chrome://instantbird/content/account.xml#account");
+}
+
+richlistitem:not([selected="true"]) .account-buttons {
+ display: none;
+}
+
+richlistitem:not([state="connected"]) .connected,
+richlistitem:not([state="connecting"]) .connecting,
+richlistitem:not([state="disconnected"]) .disconnected,
+richlistitem:not([state="disconnecting"]) .disconnecting,
+richlistitem:not([error="true"]) .error,
+richlistitem:not([state="disconnected"]) .error,
+richlistitem[error="true"] .disconnected,
+richlistitem:not([state="disconnected"]) .connectButton,
+richlistitem[state="disconnected"] .disconnectButton,
+richlistitem[state="disconnecting"] .disconnectButton
+{
+ display: none;
+}
+
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/accounts.js
@@ -0,0 +1,194 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+// This is the list of notifications that the account manager window observes
+const events = [
+ "purple-quit",
+ "account-added",
+ "account-updated",
+ "account-removed",
+ "account-connected",
+ "account-connecting",
+ "account-disconnected",
+ "account-disconnecting",
+ "account-connect-progress",
+ "account-connect-error"
+];
+
+var gAccountManager = {
+ load: function am_load() {
+ this.accountList = document.getElementById("accountlist");
+ for (let acc in this.getAccounts()) {
+ //dump(acc.id + ": " + acc.name + "\n");
+ var elt = document.createElement("richlistitem");
+ this.accountList.appendChild(elt);
+ elt.build(acc);
+ }
+ addObservers(this, events);
+ if (!this.accountList.getRowCount())
+ // This is horrible, but it works. Otherwise (at least on mac)
+ // the wizard is not centered relatively to the account manager
+ setTimeout(function() { gAccountManager.new(); }, 0);
+ else
+ this.accountList.selectedIndex = 0;
+ window.addEventListener("unload", this.unload, false);
+ },
+ unload: function am_unload() {
+ removeObservers(gAccountManager, events);
+ },
+ observe: function am_observe(aObject, aTopic, aData) {
+ if (aTopic == "purple-quit") {
+ // libpurple is being uninitialized. We don't need the account
+ // manager window anymore, close it.
+ this.close();
+ return;
+ }
+
+ if (!(aObject instanceof Ci.purpleIAccount))
+ throw "Bad notification.";
+
+ if (aTopic == "account-added") {
+ dump("new account : " + aObject.id + ": " + aObject.name + "\n");
+ var elt = document.createElement("richlistitem");
+ this.accountList.appendChild(elt);
+ elt.build(aObject);
+ if (this.accountList.getRowCount() == 1)
+ this.accountList.selectedIndex = 0;
+ }
+ else if (aTopic == "account-removed") {
+ dump("deleting account : " + aObject.id + ": " + aObject.name + "\n");
+ var elt = document.getElementById(aObject.id);
+ if (!elt.selected) {
+ this.accountList.removeChild(elt);
+ return;
+ }
+ // The currently selected element is removed,
+ // ensure another element gets selected (if the list is not empty)
+ var selectedIndex = this.accountList.selectedIndex;
+ this.accountList.removeChild(elt);
+ var count = this.accountList.getRowCount();
+ if (!count)
+ return;
+ if (selectedIndex == count)
+ --selectedIndex;
+ this.accountList.selectedIndex = selectedIndex;
+ dump("new selected index : " + selectedIndex + "\n");
+ }
+ else if (aTopic == "account-updated") {
+ var elt = document.getElementById(aObject.id);
+ elt.build(aObject);
+ return;
+ }
+
+ const stateEvents = {
+ "account-connected": "connected",
+ "account-connecting": "connecting",
+ "account-disconnected": "disconnected",
+ "account-disconnecting": "disconnecting"
+ };
+ var elt = document.getElementById(aObject.id);
+ if (aTopic in stateEvents) {
+ if (!elt) {
+ /* The listitem associated with this account could not be
+ found. This happens when the account is being deleted. The
+ account-removed signal is fired before account-disconnecting
+ and account-disconnected. Maybe we should add a readonly
+ boolean attribute |deleting| to purpleIAccount? */
+ return;
+ }
+
+ /* handle protocol icon animation while connecting */
+ var icon = document.getAnonymousElementByAttribute(elt, "anonid", "prplicon");
+ if (aTopic == "account-connecting") {
+ icon.animate();
+ elt.removeAttribute("error");
+ aObject.connectionStateMsg = "";
+ elt.updateConnectionState(false);
+ }
+ else
+ icon.stop();
+
+ elt.setAttribute("state", stateEvents[aTopic]);
+ }
+ else if (aTopic == "account-connect-progress") {
+ elt.updateConnectionState(false);
+ }
+ else if (aTopic == "account-connect-error") {
+ elt.updateConnectionState(true);
+ }
+ },
+ connect: function am_connect() {
+ this.accountList.selectedItem.connect();
+ },
+ disconnect: function am_disconnect() {
+ this.accountList.selectedItem.disconnect();
+ },
+ delete: function am_delete() {
+ this.accountList.selectedItem.delete();
+ },
+ new: function am_new() {
+ this.openDialog("chrome://instantbird/content/accountWizard.xul");
+ },
+ edit: function am_edit() {
+ this.openDialog("chrome://instantbird/content/account.xul",
+ this.accountList.selectedItem.account);
+ },
+ autologin: function am_autologin() {
+ var elt = this.accountList.selectedItem;
+ elt.autoLogin = !elt.autoLogin;
+ },
+ close: function am_close() {
+ window.close();
+ },
+
+ selectAccount: function am_selectAccount(aAccountId) {
+ this.accountList.selectedItem = document.getElementById(aAccountId);
+ this.accountList.ensureSelectedElementIsVisible();
+ },
+
+ getAccounts: function am_getAccounts() {
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ return getIter(pcs.getAccounts, Ci.purpleIAccount);
+ },
+
+ openDialog: function am_openDialog(aUrl, aArgs) {
+ window.openDialog(aUrl, "",
+ "chrome,modal,titlebar,centerscreen",
+ aArgs);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/accounts.xul
@@ -0,0 +1,79 @@
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<!-- ***** 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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+<?xml-stylesheet href="chrome://instantbird/content/accounts.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/accounts.css" type="text/css"?>
+
+<!DOCTYPE window [
+ <!ENTITY % accountsDTD SYSTEM "chrome://instantbird/locale/accounts.dtd">
+ %accountsDTD;
+]>
+
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ id="accountManager"
+ windowtype="Messenger:Accounts"
+ onload="gAccountManager.load()"
+ title="&accountManager.title;"
+ height="300"
+ width="500"
+ persist="screenX screenY">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/accounts.js"/>
+
+ <stringbundle id="accountsBundle" src="chrome://instantbird/locale/accounts.properties"/>
+
+ <commandset id="accountsCommands">
+ <command id="cmd_close" oncommand="gAccountManager.close()"/>
+ </commandset>
+
+ <keyset id="accountsKeys">
+ <key id="key_close1" key="w" modifiers="accel" command="cmd_close"/>
+ <key id="key_close2" keycode="VK_ESCAPE" command="cmd_close"/>
+ </keyset>
+
+ <richlistbox id="accountlist" flex="1" ondblclick="gAccountManager.new()"/>
+ <hbox id="bottombuttons">
+ <button id="newaccount" oncommand="gAccountManager.new()"
+ label="&accountManager.newAccount.label;"
+ accesskey="&accountManager.newAccount.accesskey;"/>
+ <spacer flex="1"/>
+ <button id="close" command="cmd_close"
+ label="&accountManager.close.label;"
+ accesskey="&accountManager.close.accesskey;"/>
+ </hbox>
+</window>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/addbuddy.js
@@ -0,0 +1,101 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+
+var addBuddy = {
+ onload: function ab_onload() {
+ this.pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ this.buildAccountList();
+ this.buildTagList();
+ },
+
+ buildAccountList: function ab_buildAccountList() {
+ var accountList = document.getElementById("accountlist");
+ for (let acc in this.getAccounts()) {
+ if (!acc.connected)
+ continue;
+ var proto = acc.protocol;
+ var item = accountList.appendItem(acc.name, acc.id, proto.name);
+ item.setAttribute("image", "chrome://instantbird/skin/prpl/" + proto.id + ".png");
+ item.setAttribute("class", "menuitem-iconic");
+ }
+ if (!accountList.itemCount) {
+ document.getElementById("addBuddyDialog").cancelDialog();
+ throw "No connected account!";
+ }
+ accountList.selectedIndex = 0;
+ },
+
+ buildTagList: function ab_buildTagList() {
+ var tagList = document.getElementById("taglist");
+ for (let tag in this.getTags())
+ tagList.appendItem(tag.name, tag.id);
+ tagList.selectedIndex = 0;
+ },
+
+ getValue: function ab_getValue(aId) {
+ var elt = document.getElementById(aId);
+ return elt.value;
+ },
+
+ create: function ab_create() {
+ var account = this.pcs.getAccountById(this.getValue("accountlist"));
+ var name = this.getValue("name");
+
+ var tag;
+ var taglist = document.getElementById("taglist");
+ var items = taglist.getElementsByAttribute("label", taglist.label);
+ if (items.length)
+ tag = this.pcs.getTagById(items[0].value);
+ else
+ tag = this.pcs.createTag(taglist.label);
+
+ this.pcs.addBuddy(account, tag, name);
+ },
+
+ getAccounts: function ab_getAccounts() {
+ return getIter(this.pcs.getAccounts, Ci.purpleIAccount);
+ },
+ getTags: function ab_getTags() {
+ var DBConn = this.pcs.storageConnection;
+ var statement = DBConn.createStatement("SELECT id, name FROM tags");
+ while (statement.executeStep())
+ yield { id: statement.getInt32(0),
+ name: statement.getUTF8String(1) };
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/addbuddy.xul
@@ -0,0 +1,80 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/account.css" type="text/css"?>
+
+<!DOCTYPE window SYSTEM "chrome://instantbird/locale/addbuddy.dtd">
+
+<dialog
+ id = "addBuddyDialog"
+ title = "&addBuddyWindow.title;"
+ buttons= "accept,cancel"
+ width = "300"
+ height = "150"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload = "addBuddy.onload()"
+ ondialogaccept="addBuddy.create()">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/addbuddy.js"/>
+
+ <grid>
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+
+ <row id="nameBox">
+ <label value="&name.label;" control="name"/>
+ <textbox id="name"/>
+ </row>
+
+ <row id="accountBox">
+ <label value="&account.label;" control="accountlist"/>
+ <menulist id="accountlist"/>
+ </row>
+
+ <row id="tagBox">
+ <label value="&tag.label;" control="taglist"/>
+ <menulist id="taglist" editable="true"/>
+ </row>
+
+ </rows>
+ </grid>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/anim.xml
@@ -0,0 +1,117 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+
+<!DOCTYPE bindings>
+
+<bindings id="animBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+<!-- inspired from "chrome://global/content/bindings/tabbox.xml#tabbrowser-tabs"> -->
+
+ <binding id="anim" extends="chrome://global/content/bindings/general.xml#image">
+ <implementation implements="nsITimerCallback">
+ <destructor>
+ <![CDATA[
+ if (this._animateTimer) {
+ this._animateTimer.cancel();
+ this._animateTimer = null;
+ }
+ ]]>
+ </destructor>
+
+ <field name="_animateTimer">null</field>
+ <field name="_animateStep">24</field>
+ <field name="_animateDelay">45</field>
+ <field name="_animateDown">true</field>
+ <field name="_animatePercents">
+ [1.00, 0.85, 0.80, 0.75, 0.71,
+ 0.68, 0.65, 0.62, 0.59, 0.57,
+ 0.54, 0.52, 0.50, 0.47, 0.45,
+ 0.44, 0.42, 0.40, 0.38, 0.37,
+ 0.35, 0.34, 0.32, 0.31, 0.30]
+ </field>
+
+ <method name="notify">
+ <parameter name="aTimer"/>
+ <body><![CDATA[
+ if (!document) {
+ aTimer.cancel();
+ this._animateTimer = null;
+ }
+ var percent = this._animatePercents[this._animateStep];
+ this.style.opacity = percent;
+
+ if (this._animateDown) {
+ if (--this._animateStep < 0) {
+ this._animateDown = false;
+ this._animateStep = 0;
+ }
+ }
+ else {
+ if (++this._animateStep > this._animatePercents.length - 1) {
+ this._animateDown = true;
+ this._animateStep = this._animatePercents.length - 1;
+ }
+ }
+ ]]></body>
+ </method>
+
+ <method name="animate">
+ <body><![CDATA[
+ const Ci = Components.interfaces;
+ this._animateTimer = Components.classes["@mozilla.org/timer;1"]
+ .createInstance(Ci.nsITimer);
+ this._animateTimer.initWithCallback(this, this._animateDelay,
+ Ci.nsITimer.TYPE_REPEATING_SLACK);
+ ]]></body>
+ </method>
+
+ <method name="stop">
+ <body><![CDATA[
+ if (this._animateTimer) {
+ this._animateTimer.cancel();
+ this._animateTimer = null;
+ }
+ ]]></body>
+ </method>
+ </implementation>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/blist.css
@@ -0,0 +1,44 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+buddy {
+ -moz-binding: url("chrome://instantbird/content/buddy.xml#buddy");
+}
+
+group {
+ -moz-binding: url("chrome://instantbird/content/group.xml#group");
+}
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/blist.js
@@ -0,0 +1,244 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+const events = ["buddy-signed-on",
+ "buddy-signed-off",
+ "buddy-removed",
+ "buddy-away",
+ "buddy-idle",
+ "account-connected",
+ "account-disconnected",
+ "new-text",
+ "new-conversation",
+ "purple-quit"];
+
+const autoJoinPref = "autoJoin";
+
+var buddyList = {
+ observe: function bl_observe(aBuddy, aTopic, aMsg) {
+ //dump("received signal: " + aTopic + "\n");
+
+ if (aTopic == "purple-quit") {
+ window.close();
+ return;
+ }
+
+ if (aTopic == "new-text" || aTopic == "new-conversation") {
+/*
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var win = wm.getMostRecentWindow("Messenger:convs");
+*/
+ if (this.win && this.win.closed)
+ this.win = null;
+
+ if (!this.win) {
+ this.win = window.open(convWindow, "Conversations", "chrome,resizable");
+ this.win.pendingNotifications = [{object: aBuddy, topic: aTopic, msg: aMsg}];
+ }
+ else if (this.win.pendingNotifications)
+ this.win.pendingNotifications.push({object: aBuddy, topic: aTopic, msg: aMsg});
+
+ return;
+ }
+
+ if (aTopic == "account-connected" || aTopic == "account-disconnected") {
+ var account = aBuddy.QueryInterface(Ci.purpleIAccount);
+ if (account.protocol.id == "prpl-irc") {
+ this.checkForIrcAccount();
+ if (aTopic == "account-connected") {
+ var branch = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Ci.nsIPrefService)
+ .getBranch("messenger.account." +
+ account.id + ".");
+ if (branch.prefHasUserValue(autoJoinPref)) {
+ var autojoin = branch.getCharPref(autoJoinPref);
+ if (autojoin) {
+ autojoin = autojoin.split(",");
+ for (var i = 0; i < autojoin.length; ++i)
+ account.joinChat(autojoin[i]);
+ }
+ }
+ }
+ }
+ this.checkNotDisconnected();
+ return;
+ }
+
+ var pab = aBuddy.QueryInterface(Ci.purpleIAccountBuddy);
+ var group = pab.tag;
+ var groupId = "group" + group.id;
+ var groupElt = document.getElementById(groupId);
+ if (aTopic == "buddy-signed-on") {
+ if (!groupElt) {
+ groupElt = document.createElement("group");
+ var parent = document.getElementById("buddylistbox");
+ parent.appendChild(groupElt);
+ groupElt.build(group);
+ }
+ groupElt.addBuddy(pab);
+ return;
+ }
+
+ if (aTopic == "buddy-signed-off" ||
+ (aTopic == "buddy-removed" && groupElt)) {
+ groupElt.signedOff(pab);
+ }
+
+ if (aTopic == "buddy-idle" || aTopic == "buddy-away")
+ groupElt.updateBuddy(pab);
+ },
+
+ getAccounts: function bl_getAccounts() {
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ return getIter(pcs.getAccounts, Ci.purpleIAccount);
+ },
+ checkNotDisconnected: function bl_checkNotDisconnected() {
+ var addBuddyItem = document.getElementById("addBuddyMenuItem");
+
+ for (let acc in this.getAccounts())
+ if (acc.connected || acc.connecting) {
+ addBuddyItem.disabled = false;
+ return;
+ }
+
+ addBuddyItem.disabled = true;
+ menus.accounts();
+ },
+ checkForIrcAccount: function bl_checkForIrcAccount() {
+ var joinChatItem = document.getElementById("joinChatMenuItem");
+
+ for (let acc in this.getAccounts())
+ if (acc.connected && acc.protocol.id == "prpl-irc") {
+ joinChatItem.disabled = false;
+ return;
+ }
+
+ joinChatItem.disabled = true;
+ },
+
+ load: function bl_load() {
+ initPurpleCore();
+ buddyList.checkNotDisconnected();
+ buddyList.checkForIrcAccount();
+ addObservers(buddyList, events);
+ this.addEventListener("unload", buddyList.unload, false);
+ },
+ unload: function bl_unload() {
+ removeObservers(buddyList, events);
+ uninitPurpleCore();
+ },
+
+ getAway: function bl_getAway() {
+ // prompt the user to enter an away message
+ var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
+ .getService(Components.interfaces.nsIPromptService);
+ var bundle = document.getElementById("awayBundle");
+ var message = {value: bundle.getString("away.default.message")};
+ if (!prompts.prompt(window, bundle.getString("away.prompt.title"),
+ bundle.getString("away.prompt.message"), message,
+ null, {value: false}))
+ return; // the user canceled
+
+ // actually get away
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Components.interfaces.purpleICoreService);
+ pcs.away(message.value);
+
+ // display the notification on the buddy list
+ var buttons = [{
+ accessKey: "",
+ label: bundle.getString("away.back.button"),
+ popup: null,
+ callback: buddyList.getBack
+ }];
+ var nbox = document.getElementById("buddyListMsg");
+ var notif = nbox.appendNotification(message.value, null,
+ "chrome://instantbird/skin/away-16.png",
+ nbox.PRIORITY_INFO_MEDIUM, buttons);
+ notif.setAttribute("hideclose", "true");
+ document.getElementById("getAwayMenuItem").disabled = true;
+ },
+ getBack: function bl_getBack() {
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Components.interfaces.purpleICoreService);
+ pcs.back(null);
+ document.getElementById("getAwayMenuItem").disabled = false;
+ },
+
+ // Handle key pressing
+ keyPress: function bl_keyPress(aEvent) {
+ switch (aEvent.keyCode) {
+
+ // If Enter or Return is pressed, open a new conversation
+ case aEvent.DOM_VK_RETURN:
+ case aEvent.DOM_VK_ENTER:
+ var item = document.getElementById("buddylistbox").selectedItem;
+ if (item.localName == "buddy")
+ item.openConversation();
+ break;
+ }
+ return;
+ }
+};
+
+function initPurpleCore()
+{
+ try {
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ pcs.init();
+ }
+ catch (e) {
+ alert(e);
+ }
+}
+
+function uninitPurpleCore()
+{
+ try {
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ pcs.quit();
+ }
+ catch (e) {
+ alert(e);
+ }
+}
+
+this.addEventListener("load", buddyList.load, false);
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/blist.xul
@@ -0,0 +1,105 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/blist.css" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/blist.css" type="text/css"?>
+
+<!DOCTYPE window [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %instantbirdDTD;
+ %brandDTD;
+]>
+
+<window
+ id = "instantbird"
+ title = "&blist.title;"
+ width = "200"
+ height = "600"
+ persist= "width height screenX screenY"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/blist.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/menus.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/sound.js"/>
+
+ <stringbundle id="awayBundle" src="chrome://instantbird/locale/away.properties"/>
+
+ <commandset id="maincommandset">
+ <command id="accountmanager" oncommand="menus.accounts()"/>
+ </commandset>
+
+ <keyset id="mainkeyset">
+ <key id="accountsetup" key="&account.commandkey;" command="accountmenu" modifiers="accel"/>
+ </keyset>
+
+
+ <menubar id="blistMenubar">
+ <menu label="&file.menu;" id="fileMenu" accesskey="&file.accesskey;">
+ <menupopup id="fileMenuPopup">
+ <menuitem id="addBuddyMenuItem" label="&addBuddy;" oncommand="menus.addBuddy()"/>
+ <menuitem id="joinChatMenuItem" label="&joinChat;" oncommand="menus.joinChat()"/>
+ <menuseparator/>
+ <menuitem id="getAwayMenuItem" label="&getAway;" oncommand="menus.getAway()"/>
+ </menupopup>
+ </menu>
+ <menu label="&tools.menu;" id="toolsMenu" accesskey="&tools.accesskey;">
+ <menupopup id="toolsMenuPopup">
+ <menuitem id="soundsMenuItem" label="&sounds;" oncommand="menus.toggleSounds()" type="checkbox"/>
+ <menuitem id="accountsMenuItem" label="&accountManager;" command="accountmanager" key="accountsetup" accesskey="&account.accesskey;"/>
+ <menuseparator/>
+ <menuitem id="addonsMenuItem" label="&addonManager;" oncommand="menus.addons()"/>
+ </menupopup>
+ </menu>
+ <menu label="&help.menu;" id="aboutSeparator"> <!-- this id ensure it gets hidden on mac -->
+ <menupopup id="helpMenuPopup">
+ <menuitem id="aboutName" label="&about.menu;" oncommand="menus.about()"/>
+ </menupopup>
+ </menu>
+ </menubar>
+
+ <notificationbox id="buddyListMsg" flex="1">
+ <richlistbox id="buddylistbox" flex="1" onkeypress="buddyList.keyPress(event);"/>
+ </notificationbox>
+
+ <statusbar>
+ <statusbarpanel id="status" label="" crop="end" flex="1"/>
+ </statusbar>
+</window>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/buddy.xml
@@ -0,0 +1,198 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+
+<!DOCTYPE bindings>
+
+<bindings id="buddyBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="buddy" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:hbox>
+ <xul:stack class="prplBuddyIcon">
+ <xul:image xbl:inherits="src=icon" class="protoIcon"/>
+ <xul:image src="chrome://instantbird/skin/away.png"
+ class="statusIcon"/>
+ </xul:stack>
+ <xul:label class="buddyDisplayName" xbl:inherits="value=displayname"/>
+ <xul:textbox collapsed="true" class="plain" xbl:inherits="value=displayname"/>
+ </xul:hbox>
+ </content>
+ <implementation>
+ <constructor>
+ <![CDATA[
+ //dump("constructing buddy\n");
+ ]]>
+ </constructor>
+ <destructor>
+ <![CDATA[
+ //dump("destructing buddy\n");
+ ]]>
+ </destructor>
+
+ <method name="build">
+ <parameter name="aBuddy"/>
+ <body>
+ <![CDATA[
+ this.buddyId = aBuddy.id;
+ this.name = aBuddy.name;
+ this.alias = aBuddy.alias;
+ this.setAttribute("displayname", this.alias || this.name);
+ //this.setAttribute("id", "buddy" + this.buddyId);
+ this.prpl = aBuddy.getAccount(0).protocol.id;
+ this.setAttribute("icon", "chrome://instantbird/skin/prpl/" +
+ this.prpl + ".png");
+ this.accounts = { };
+ this.update();
+ ]]>
+ </body>
+ </method>
+
+ <method name="update">
+ <body>
+ <![CDATA[
+ var away = true;
+ for (var id in this.accounts)
+ if (this.accounts[id].available) {
+ away = false;
+ break;
+ }
+ if (away) {
+ var status;
+ for (var id in this.accounts) {
+ status = this.accounts[id].status;
+ if (status)
+ break;
+ }
+ this.setAttribute("away", "true");
+ if (status)
+ this.tooltipText = this.name + ': ' + status;
+ }
+ else {
+ this.removeAttribute("away");
+ this.tooltipText = this.name;
+ }
+
+ var idle = true;
+ for (var id in this.accounts)
+ if (!this.accounts[id].idle) {
+ idle = false;
+ break;
+ }
+ if (idle)
+ this.setAttribute("idle", "true");
+ else
+ this.removeAttribute("idle");
+ ]]>
+ </body>
+ </method>
+
+ <method name="addAccount">
+ <parameter name="aPab"/>
+ <body>
+ <![CDATA[
+ var id = aPab.account.id;
+ if (id in this.accounts)
+ throw "This buddy has already been added";
+ this.accounts[id] = aPab;
+ this.update();
+ ]]>
+ </body>
+ </method>
+
+ <method name="removeAccount">
+ <parameter name="aPab"/>
+ <body>
+ <![CDATA[
+ var id = aPab.account.id;
+ if (!(id in this.accounts))
+ return; // this used to throw, but this seems to be harmless
+ //throw "This buddy (" + aPab.buddy.name +
+ ") has not been added for account " + aPab.account.name;
+
+ delete this.accounts[id];
+
+ if (this.accounts.__count__) {
+ this.update();
+ return false;
+ }
+
+ // No account left, this node is now useless, remove it
+ this.parentNode.removeChild(this);
+ return true;
+ ]]>
+ </body>
+ </method>
+
+ <method name="openConversation">
+ <body>
+ <![CDATA[
+ var pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Components.interfaces.purpleICoreService);
+ var buddy = pcs.getBuddyById(this.buddyId);
+ var conv;
+ for (var id in this.accounts) {
+ conv = this.accounts[id].createConversation();
+ break;
+ }
+
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var convWindow = wm.getMostRecentWindow("Messenger:convs");
+ if (convWindow) {
+ convWindow.msgObserver.focusConv(conv);
+ convWindow.focus();
+ }
+ else {
+ // the conversation window has been closed. Force reopening.
+ var os = Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.nsIObserverService);
+ os.notifyObservers(conv, "new-conversation", null);
+ }
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ <handlers>
+ <handler event="click" clickcount="2" action="openConversation();"/>
+ </handlers>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/conv.html
@@ -0,0 +1,46 @@
+<!-- ***** 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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+<html>
+ <head>
+ <link rel="stylesheet" type="text/css" href="chrome://instantbird/skin/conv.css" />
+ </head>
+ <body id="ibcontent">
+ <h1 id="welcome"><img src="chrome://instantbird/skin/instantbird.png"/></h1>
+ <hr />
+ </body>
+</html>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/conversation.xml
@@ -0,0 +1,398 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+
+<!DOCTYPE bindings [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ %instantbirdDTD;
+]>
+
+<bindings id="conversationBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="conversation">
+ <resources>
+ <stylesheet src="chrome://instantbird/skin/instantbird.css"/>
+ </resources>
+ <content>
+ <xul:vbox class="convBox" flex="1">
+ <xul:browser flex="1" class="browser" anonid="browser" type="content"/>
+ <xul:splitter anonid="splitter" class="splitter"/>
+ <xul:deck anonid="conv-bottom" class="conv-bottom" selectedIndex="1">
+ <xul:vbox>
+ <xul:toolbar anonid="conv-toolbar">
+ <xul:toolbarbutton label="Bold" oncommand="this.editorDoCommand('bold');"/>
+ <xul:toolbarbutton label="Italic" oncommand="this.editorDoCommand('italic');"/>
+ <xul:toolbarbutton label="Underline" oncommand="this.editorDoCommand('underline');"/>
+ </xul:toolbar>
+ <xul:editor anonid="editor" editortype="html" src="about:blank" flex="1"/>
+ </xul:vbox>
+ <xul:textbox anonid="input" multiline="true" spellcheck="true" flex="1"/>
+ </xul:deck>
+ </xul:vbox>
+ </content>
+ <implementation implements="nsIWebProgressListener">
+ <constructor>
+ <![CDATA[
+ document.getAnonymousElementByAttribute(this, "anonid", "input")
+ .addEventListener("keypress", this.onSendMsg, false);
+
+ var browser = document.getAnonymousElementByAttribute(this, "anonid", "browser");
+ var docShell = browser.docShell;
+ docShell.allowJavascript = false;
+ docShell.allowAuth = false;
+ docShell.allowPlugins = false;
+ docShell.allowMetaRedirects = false;
+ docShell.allowSubframes = false;
+ docShell.allowImages = false;
+ var url = 'data:text/html,<html><head><link rel="stylesheet" type="text/css" href="chrome://instantbird/skin/conv.css" /></head>';
+ url += '<body id="ibcontent"></body></html>';
+ browser.setAttribute("src", url);//"chrome://instantbird/content/conv.html"
+ browser.addProgressListener(this);
+
+ var editor = document.getAnonymousElementByAttribute(this, "anonid", "editor");
+ editor.addEventListener("keypress", this.onSendHTMLMsg, false);
+ //this doesn't work at the moment
+ //editor.contentDocument.designMode = "on";
+ //setTimeout(function() { editor.contentWindow.focus(); }, 100);
+ ]]>
+ </constructor>
+
+ <destructor>
+ <![CDATA[
+ this._conv.close();
+ ]]>
+ </destructor>
+
+ <field name="loaded">false</field>
+ <field name="messageQueue">[]</field>
+
+ <method name="addMsg">
+ <parameter name="aMsg"/>
+ <body>
+ <![CDATA[
+ if (this.loaded)
+ this._addMsg(aMsg);
+ else
+ this.messageQueue.push(aMsg);
+ ]]>
+ </body>
+ </method>
+
+ <method name="_addMsg">
+ <parameter name="aMsg"/>
+ <body>
+ <![CDATA[
+ var time = aMsg.time;
+ var name = aMsg.alias ||aMsg.who;
+ var pseudoClass = "pseudo";
+ var color = "";
+ if (aMsg.incoming) {
+ var nick = aMsg.conversation.isChat && name.match(/[a-zA-Z0-9]+/);
+ if (nick) {
+ nick = nick[0].toLowerCase();
+ var weight = 10;
+ var res = 0;
+ for (var i = 0; i < nick.length; ++i) {
+ var char = nick.charCodeAt(i) - 47;
+ if (char > 10)
+ char -= 39;
+ // now char contains a value between 1 and 36
+ res += char * weight;
+ weight *= 0.52; //arbitrary
+ }
+ res = Math.round(res) % 360;
+ color = " style=\"color: hsl(" + res + ", 100%, 50%)\"";
+ }
+ else
+ pseudoClass += " incoming";
+ }
+ else
+ if (aMsg.outgoing)
+ pseudoClass += " outgoing";
+
+ var msgClass = [];
+ if (aMsg.system)
+ msgClass.push("system");
+ if (aMsg.containsNick)
+ msgClass.push("nick");
+ var txt = '<span class="date">' + time + '</span> ';
+
+ var msg = aMsg.message;
+ if (!aMsg.noLinkification) {
+ msg = Components.classes["@mozilla.org/txttohtmlconv;1"]
+ .getService(Ci.mozITXTToHTMLConv)
+ .scanHTML(msg, 2)
+ .replace(/&(apos|quot);/g, "&$1;");
+ }
+
+ var me = msg.match("^/me(.*)");
+ if (!aMsg.system)
+ txt += '<span class="' + pseudoClass + '"' + color + '>' + name + (me ? "</span> " : ":</span> ");
+
+ txt += (me ? me[1] : msg).replace(/\n/g, "<br/>");
+ if (me)
+ msgClass.push("me");
+
+ this._addTxt(txt, msgClass.join(" "));
+
+ if (this.tab && !this.tab.selected && aMsg.incoming && !aMsg.system) {
+ if (aMsg.conversation.isChat && aMsg.containsNick)
+ this.tab.setAttribute("attention", "true");
+ else
+ this.tab.setAttribute("unread", "true");
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="_addTxt">
+ <parameter name="aTxt"/>
+ <parameter name="aClass"/>
+ <body>
+ <![CDATA[
+ if (!this.loaded)
+ throw "Trying to append text to a not yet loaded browser";
+
+ var browser = document.getAnonymousElementByAttribute(this, "anonid", "browser");
+ var doc = browser.contentDocument;
+ var elt = doc.getElementById("ibcontent");
+ var newElt = doc.createElement("p");
+ newElt.innerHTML = aTxt;
+ newElt.className = aClass;
+ var shouldScroll = elt.scrollHeight == elt.scrollTop + elt.clientHeight;
+ elt.appendChild(newElt);
+ if (shouldScroll)
+ newElt.scrollIntoView(true);
+ ]]>
+ </body>
+ </method>
+
+ <method name="sendMsg">
+ <parameter name="aMsg"/>
+ <body>
+ <![CDATA[
+ var re = /^\/raw (.*)/;
+ var msg = aMsg.match(re);
+ if (msg)
+ msg = msg[1];
+ else
+ msg = Components.classes["@mozilla.org/txttohtmlconv;1"]
+ .getService(Ci.mozITXTToHTMLConv)
+ .scanTXT(aMsg, 0);
+ this._conv.sendMsg(msg);
+ ]]>
+ </body>
+ </method>
+
+ <method name="onSendMsg">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ if (event.keyCode != 13)
+ return;
+
+ /* this method is called by an eventListener.
+ This points to the textbox element. */
+ var conv = this;
+ while (conv.localName != "conversation")
+ conv = conv.parentNode;
+ if (!event.ctrlKey && !event.shiftKey && !event.altKey) {
+ conv.sendMsg(this.value);
+ this.value = "";
+ event.preventDefault();
+ }
+ else if (!event.shiftKey)
+ this.value += "\n";
+ ]]>
+ </body>
+ </method>
+
+ <method name="onSendHTMLMsg">
+ <parameter name="event"/>
+ <body>
+ <![CDATA[
+ if (event.keyCode != 13)
+ return;
+
+ /* this method is called by an eventListener.
+ This points to the textbox element. */
+ var conv = this;
+ while (conv.localName != "conversation")
+ conv = conv.parentNode;
+
+ var editor = this.getEditor(this.contentWindow);
+ var docRoot = editor.rootElement;
+
+ if (!event.ctrlKey && !event.shiftKey && !event.altKey) {
+ conv.sendMsg(docRoot.innerHTML);
+ docRoot.innerHTML = "";
+ event.preventDefault();
+ }
+ else {
+ if (!event.shiftKey)
+ // unfortunately, this doesn't work
+ this.contentDocument.execCommand("inserthtml", false, "<br>");
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="editorDoCommand">
+ <parameter name="aCmd"/>
+ <parameter name="aHtml"/>
+ <body>
+ <![CDATA[
+ var editor = document.getAnonymousElementByAttribute(this, "anonid", "editor");
+ editor.contentDocument.execCommand(aCmd, false, aHtml);
+ ]]>
+ </body>
+ </method>
+
+ <!-- nsIWebProgressListener implementation -->
+ <method name="onStateChange">
+ <parameter name="aProgress"/>
+ <parameter name="aRequest"/>
+ <parameter name="aStateFlags"/>
+ <parameter name="aStatus"/>
+ <body>
+ <![CDATA[
+ const WPL = Components.interfaces.nsIWebProgressListener;
+ if ((aStateFlags & WPL.STATE_IS_DOCUMENT) &&
+ (aStateFlags & WPL.STATE_STOP)) {
+ var browser = document.getAnonymousElementByAttribute(this, "anonid", "browser");
+ browser.removeProgressListener(this);
+ this.loaded = true;
+ for (var i = 0; i < this.messageQueue.length; ++i)
+ this._addMsg(this.messageQueue[i]);
+ this.messageQueue = null;
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="onProgressChange">
+ <parameter name="aProgress"/>
+ <parameter name="aRequest"/>
+ <parameter name="aCurSelf"/>
+ <parameter name="aMaxSelf"/>
+ <parameter name="aCurTotal"/>
+ <parameter name="aMaxTotal"/>
+ </method>
+
+ <method name="onLocationChange">
+ <parameter name="aProgress"/>
+ <parameter name="aRequest"/>
+ <parameter name="aLocation"/>
+ </method>
+
+ <method name="onStatusChange">
+ <parameter name="aProgress"/>
+ <parameter name="aRequest"/>
+ <parameter name="aStatus"/>
+ <parameter name="aMessage"/>
+ </method>
+
+ <method name="onSecurityChange">
+ <parameter name="aProgress"/>
+ <parameter name="aRequest"/>
+ <parameter name="aState"/>
+ </method>
+
+ <property name="convId">
+ <getter>
+ <![CDATA[
+ return this._conv.id;
+ ]]>
+ </getter>
+ </property>
+
+ <property name="conv">
+ <getter>
+ <![CDATA[
+ return this._conv;
+ ]]>
+ </getter>
+ <setter>
+ <![CDATA[
+ this._conv = val;
+ return val;
+ ]]>
+ </setter>
+ </property>
+ </implementation>
+ <handlers>
+ <handler event="focus" phase="capturing">
+ <![CDATA[
+ if (event.originalTarget != this)
+ return;
+ if (!this.hasAttribute("focused")) {
+ var input = document.getAnonymousElementByAttribute(this, "anonid", "input");
+ this.setAttribute("focused", "true");
+ //FIXME: check why it doesn't work without this timeout
+ setTimeout(function () {input.focus(); }, 1);
+ }
+ ]]>
+ </handler>
+ <handler event="blur" phase="capturing">
+ <![CDATA[
+ this.removeAttribute("focused");
+ ]]>
+ </handler>
+ </handlers>
+ </binding>
+
+ <binding id="convtab" extends="chrome://global/content/bindings/tabbox.xml#tab">
+ <resources>
+ <stylesheet src="chrome://global/skin/tabbox.css"/>
+ </resources>
+ <content>
+ <xul:hbox class="tab-image-left" xbl:inherits="selected"/>
+ <xul:hbox flex="1" class="tab-image-middle" align="center" xbl:inherits="selected">
+ <xul:stack class="tab-icon">
+ <xul:image xbl:inherits="validate,src=image" class="tab-icon-image"/>
+ <xul:image class="tab-extra-status"/>
+ </xul:stack>
+ <xul:label flex="1" xbl:inherits="value=label,crop,accesskey" crop="right" class="tab-text"/>
+ </xul:hbox>
+ <xul:hbox class="tab-image-right" xbl:inherits="selected"/>
+ </content>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/credits.xhtml
@@ -0,0 +1,260 @@
+<!-- -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+# ***** 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 Thunderbird Credits.
+#
+# The Initial Developer of the Original Code is Ben Goodger.
+# Portions created by the Initial Developer are Copyright (C) 2004
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Ben Goodger <ben@mozilla.org>
+# David Baron <dbaron@mozilla.org>
+# Florian Quèze <florian@instantbird.org>
+#
+# 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 *****
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
+ [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+ <!ENTITY % creditsDTD SYSTEM "chrome://instantbird/locale/credits.dtd">
+ %creditsDTD;
+ <!ENTITY % licenseDTD SYSTEM "chrome://global/locale/license.dtd">
+ %licenseDTD;
+ ]
+>
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>&credit.title;</title>
+
+ <style>
+ html {
+ background-color: white;
+ color: black;
+ }
+
+ * {
+ cursor: default;
+ -moz-user-select: none;
+ }
+
+ #titleBox {
+ position: fixed;
+ left: 0px;
+ top: 0px;
+ right: 0px;
+ bottom: auto;
+ z-index: 999;
+ }
+
+ #footerBox {
+ position: fixed;
+ left: 0px;
+ top: auto;
+ right: 0px;
+ bottom: 0px;
+ z-index: 999;
+ }
+
+ #creditsBox {
+ position: absolute;
+ left: 0px;
+ top: 0px;
+ bottom:8px;
+ overflow: hidden;
+ z-index: 1;
+ width: 280px;
+ margin-left: 10px;
+ margin-right: 10px;
+ font-family: Arial, sans-serif;
+ font-size: small;
+ }
+
+ #creditsBox > .title > .motto {
+ margin-bottom: 180px;
+ }
+
+ h3 {
+ font-weight: bold;
+ font-size: small;
+ text-align: center;
+ margin: 15px 0px 5px 0px;
+ }
+
+ .creditsGroup {
+ margin-bottom: 1px;
+ text-align: center;
+ }
+
+ .footnote {
+ font-size: x-small;
+ text-align: justify;
+ }
+
+ h2.title {
+ margin-top: 200px;
+ margin-bottom: 100px;
+ text-align: center;
+ }
+
+ .motto {
+ margin-top: 2px;
+ font-style: italic;
+ font-size: small;
+ font-weight: normal;
+ padding-left: 2em;
+ }
+
+ #gecko {
+ margin-top: 100px;
+ margin-bottom: 100px;
+ font-size: medium;
+ }
+
+ a {
+ color: blue;
+ text-decoration: underline;
+ }
+
+ ul {
+ margin-top: 0px;
+ margin-left: 0px;
+ padding-left: 0px;
+ }
+
+ li {
+ list-style-type: none;
+ }
+
+ .center {
+ text-align: center;
+ }
+ </style>
+
+ <script type="application/x-javascript" src="chrome://global/content/globalOverlay.js"></script>
+ <script type="application/x-javascript">
+ <![CDATA[
+
+ var gCreditsInterval = -1;
+
+ function uninit()
+ {
+ if (gCreditsInterval > -1)
+ clearInterval(gCreditsInterval);
+ }
+
+ function init()
+ {
+ var cb = document.getElementById("creditsBox");
+ cb.scrollTop = 0;
+ setTimeout(runCredits, 3000);
+ }
+
+ function runCredits()
+ {
+ gCreditsInterval = setInterval("creditsCallback()", 25);
+ }
+
+ function creditsCallback()
+ {
+ var cb = document.getElementById("creditsBox");
+ var newtop = cb.scrollTop + 1;
+ cb.scrollTop = newtop;
+ if (cb.scrollTop != newtop) {
+ // we're at the bottom
+ clearInterval(gCreditsInterval);
+ setTimeout(function() { cb.scrollTop = 0 }, 10000);
+ }
+ }
+
+ function openLicense()
+ {
+ var fileLocator =
+ Components.classes["@mozilla.org/file/directory_service;1"].
+ getService(Components.interfaces.nsIProperties);
+ var appDir = fileLocator.get("XCurProcD", Components.interfaces.nsIFile);
+ appDir.append("license.html");
+ var protocolSvc =
+ Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].
+ getService(Components.interfaces.nsIExternalProtocolService);
+ var ioService = Components.classes["@mozilla.org/network/io-service;1"].
+ getService(Components.interfaces.nsIIOService);
+ var uri = ioService.newFileURI(appDir);
+ protocolSvc.loadUrl(uri);
+ }
+
+ ]]>
+ </script>
+ </head>
+ <body onload="init();" onunload="uninit();">
+ <div id="titleBox">
+ <img src="chrome://branding/content/about-credits.png" />
+ </div>
+
+ <div id="creditsBox">
+ <h2 class="title">&brandFullName;
+ <div class="motto">&brandMotto;</div>
+ </h2>
+
+ <div class="creditsGroup">
+ <h3>&credit.leads;</h3>
+ <div class="credit">Florian Quèze</div>
+ <div class="credit">Quentin Castier</div>
+ </div>
+
+ <div class="creditsGroup">
+ <h3>&credit.thanks;</h3>
+ <div class="credit">
+ <ul>
+ <li>Mozilla developers</li>
+ <li>The Pidgin team</li>
+ </ul>
+ </div>
+
+ &credit.translation;
+
+ </div>
+
+ <p id="gecko" class="center">&credit.poweredByGecko;</p>
+
+ <p class="footnote">
+ &brandFullName; &license.part0; ©2007-2008 &license.part1;
+ <a href="" link="http://www.mozilla.org/credits/" onclick="visitLink(event); event.preventDefault();">&license.contrib;</a>,
+ &license.part2;
+ <a href="" onclick="openLicense(); event.preventDefault();">license</a>
+ &license.part3;</p>
+
+ </div>
+
+ <div id="footerBox">
+ <img src="chrome://branding/content/about-footer.png"/>
+ </div>
+ </body>
+</html>
+
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/group.xml
@@ -0,0 +1,148 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+
+<!DOCTYPE bindings>
+
+<bindings id="groupBindings"
+ xmlns="http://www.mozilla.org/xbl"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xbl="http://www.mozilla.org/xbl">
+
+ <binding id="group" extends="chrome://global/content/bindings/richlistbox.xml#richlistitem">
+ <content>
+ <xul:hbox>
+ <xul:label xbl:inherits="value=name"/>
+ <xul:textbox collapsed="true" class="plain" xbl:inherits="value=displayname"/>
+ </xul:hbox>
+ </content>
+ <implementation>
+ <constructor>
+ <![CDATA[
+ //dump("constructing group\n");
+ ]]>
+ </constructor>
+ <destructor>
+ <![CDATA[
+ //dump("destructing group\n");
+ ]]>
+ </destructor>
+
+ <method name="build">
+ <parameter name="aGroup"/>
+ <body>
+ <![CDATA[
+ this.groupId = aGroup.id;
+ this.name = aGroup.name;
+ this.buddies = [ ];
+ this.setAttribute("id", "group" + this.groupId);
+ this.setAttribute("name", this.name);
+ ]]>
+ </body>
+ </method>
+
+ <method name="addBuddy">
+ <parameter name="aPab"/>
+ <body>
+ <![CDATA[
+ var buddy = aPab.buddy;
+
+ var buddyElt;
+ for (var i = 0; i < this.buddies.length; ++i) {
+ if (this.buddies[i].buddyId == buddy.id) {
+ buddyElt = this.buddies[i];
+ break;
+ }
+ }
+
+ if (!buddyElt) {
+ buddyElt = document.createElement("buddy");
+
+ var last = this;
+ if (this.buddies.length)
+ last = this.buddies[this.buddies.length - 1];
+
+ this.parentNode.insertBefore(buddyElt, last.nextSibling);
+ buddyElt.build(aPab.buddy);
+ this.buddies.push(buddyElt);
+ }
+ buddyElt.addAccount(aPab);
+ ]]>
+ </body>
+ </method>
+
+ <method name="signedOff">
+ <parameter name="aPab"/>
+ <body>
+ <![CDATA[
+ var buddy = aPab.buddy;
+
+ for (var i = 0; i < this.buddies.length; ++i) {
+ if (this.buddies[i].buddyId == buddy.id) {
+ if (this.buddies[i].removeAccount(aPab)) {
+ // The buddy should be removed
+ this.buddies.splice(i, 1);
+ // Check if some buddy remain in the group, if empty remove it
+ if (!this.buddies.length)
+ this.parentNode.removeChild(this);
+ }
+ return;
+ }
+ }
+ ]]>
+ </body>
+ </method>
+
+ <method name="updateBuddy">
+ <parameter name="aPab"/>
+ <body>
+ <![CDATA[
+ var buddy = aPab.buddy;
+
+ for (var i = 0; i < this.buddies.length; ++i) {
+ if (this.buddies[i].buddyId == buddy.id) {
+ this.buddies[i].update();
+ return;
+ }
+ }
+ ]]>
+ </body>
+ </method>
+ </implementation>
+ </binding>
+</bindings>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/instantbird.css
@@ -0,0 +1,44 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+conversation {
+ -moz-binding: url("chrome://instantbird/content/conversation.xml#conversation");
+}
+
+convtab {
+ -moz-binding: url("chrome://instantbird/content/conversation.xml#convtab");
+}
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/instantbird.js
@@ -0,0 +1,205 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+const events = ["new-text",
+ "new-conversation",
+ "purple-quit"];
+
+var msgObserver = {
+ convs: { },
+ // Components.interfaces.nsIObserver
+ observe: function mo_observe(aObject, aTopic, aData) {
+ switch(aTopic) {
+ case "purple-quit":
+ window.close();
+ break;
+
+ case "new-text":
+ aObject.QueryInterface(Ci.purpleIMessage);
+ var conv = aObject.conversation;
+ var tab = this.convs[conv.id] || this.addConvTab(conv, conv.name);
+ tab.addMsg(aObject);
+
+ if (aObject.incoming && !aObject.system &&
+ (!aObject.conversation.isChat || aObject.containsNick))
+ window.getAttention();
+ break;
+
+ case "new-conversation":
+ aObject.QueryInterface(Ci.purpleIConversation);
+ this.addConvTab(aObject, aObject.name);
+ break;
+
+ default:
+ throw "Bad notification";
+ }
+ },
+
+ addConvTab: function mo_addConvTab(aConv, aTitle) {
+ if (aConv.id in this.convs)
+ return this.convs[aConv.id];
+
+ var conv = document.createElement("conversation");
+ var panels = document.getElementById("panels");
+ panels.appendChild(conv);
+
+ var tabs = document.getElementById("tabs");
+ var tab = document.createElement("convtab");
+ tab.tooltipText = aTitle;
+ tab.setAttribute("label", aTitle.replace(/@.*/, ""));
+ tabs.appendChild(tab);
+ if (!tabs.selectedItem)
+ tabs.selectedItem = tab;
+
+ conv.conv = aConv;
+ conv.tab = tab;
+ this.convs[aConv.id] = conv;
+ return conv;
+ },
+
+ focusConv: function mo_focusConv(aConv) {
+ var id = aConv.id;
+ if (!(id in this.convs)) {
+ // We only support a single chat window ATM so we can safely
+ // re-add a closed conversation tab
+ this.addConvTab(aConv, aConv.name);
+ if (!(id in this.convs))
+ throw "Can't find the conversation, even after trying to add it again!";
+ }
+ var panels = document.getElementById("panels");
+ var conv = this.convs[id];
+ panels.selectedPanel = conv;
+ document.getElementById("tabs").selectedIndex = panels.selectedIndex;
+ },
+
+ onSelectTab: function mo_onSelectTab() {
+ var tabs = document.getElementById("tabs");
+ var tab = tabs.selectedItem;
+ tab.removeAttribute("unread");
+ tab.removeAttribute("attention");
+ var panels = document.getElementById("panels");
+ panels.selectedPanel.focus();
+ },
+
+ onClickTab: function mo_onClickTab(aEvent) {
+ if (aEvent.button == 1 && aEvent.target.localName == "convtab")
+ this.closeTab(aEvent.target);
+ },
+
+ closeCurrentTab: function mo_closeCurrentTab() {
+ var tabs = document.getElementById("tabs");
+ this.closeTab(tabs.selectedItem);
+ },
+
+ closeTab: function mo_closeTab(aTab) {
+ var tabs = aTab.parentNode.childNodes;
+ var i = aTab.parentNode.getIndexOfItem(aTab);
+ if (i == -1)
+ throw "Can't find the tab that should be closed";
+
+ var panels = document.getElementById("panels");
+ var conv = panels.childNodes[i];
+ if (!conv)
+ throw "Can't find the conversation associated with the tab.";
+ delete this.convs[conv.convId];
+
+ conv.conv.close(); //FIXME We shouldn't need this, why isn't the destructor
+ // of the conversation binding called??
+
+ if (aTab.selected) {
+ if (i) {
+ // we are not on the first tab
+ aTab.parentNode.selectedItem = aTab.previousSibling;
+ panels.selectedPanel = conv.previousSibling;
+ }
+ else {
+ // we remove the first tab, which is selected
+ if (aTab.nextSibling) {
+ // at least a tab remain
+ aTab.parentNode.selectedItem = aTab.nextSibling;
+ panels.selectedPanel = conv.nextSibling;
+ }
+ else {
+ window.close();
+ }
+ }
+ }
+
+ panels.removeChild(conv);
+ // Workaround an ugly bug: when removing a panel, the selected panel disappears
+ panels.selectedPanel = panels.selectedPanel;
+
+ aTab.parentNode.removeChild(aTab);
+ },
+
+ onPopupShowing: function mo_onPopupShowing(aEvent) {
+ if (aEvent.explicitOriginalTarget.localName == "convtab")
+ this.contextTab = aEvent.explicitOriginalTarget;
+ else
+ aEvent.preventDefault();
+ },
+
+ onCommandClose: function mo_onCommandClose(aEvent) {
+ this.closeTab(this.contextTab);
+ },
+
+ load: function mo_load() {
+ addObservers(msgObserver, events);
+ if (window.pendingNotifications) {
+ let notifications = window.pendingNotifications;
+ for (let i = 0; i < notifications.length; ++i) {
+ let notif = notifications[i];
+ msgObserver.observe(notif.object, notif.topic, notif.msg);
+ }
+ delete window.pendingNotifications;
+ }
+ window.addEventListener("unload", msgObserver.unload, false);
+ },
+ unload: function mo_unload() {
+ removeObservers(msgObserver, events);
+ }
+};
+
+/*
+function setStatus(aMsg)
+{
+ var status = document.getElementById("status");
+ status.setAttribute("label", aMsg);
+}
+*/
+
+this.addEventListener("load", msgObserver.load, false);
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/instantbird.xul
@@ -0,0 +1,81 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2007
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/content/instantbird.css" type="text/css"?>
+
+<!DOCTYPE window [
+ <!ENTITY % instantbirdDTD SYSTEM "chrome://instantbird/locale/instantbird.dtd">
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+ %instantbirdDTD;
+ %brandDTD;
+]>
+
+<window
+ id = "instantbird"
+ windowtype="Messenger:convs"
+ title = "&convWindow.title;"
+ width = "500"
+ height = "600"
+ persist= "width height screenX screenY"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/instantbird.js"/>
+
+ <commandset id="conversationsCommands">
+ <command id="cmd_close" oncommand="msgObserver.closeCurrentTab()"/>
+ </commandset>
+
+ <keyset id="conversationsKeys">
+ <key id="key_close" key="w" modifiers="accel" command="cmd_close"/>
+ </keyset>
+
+ <tabbox flex="1">
+ <tabs id="tabs" context="tabs-context-menu"
+ onselect="msgObserver.onSelectTab();" onclick="msgObserver.onClickTab(event)"/>
+ <tabpanels id="panels" flex="1"/>
+ </tabbox>
+ <menupopup id="tabs-context-menu" onpopupshowing="msgObserver.onPopupShowing(event);">
+ <menuitem label="&conversation.contextMenu.close;" oncommand="msgObserver.onCommandClose(event)"/>
+ </menupopup>
+
+ <statusbar>
+ <statusbarpanel id="status" label="" crop="end" flex="1"/>
+ </statusbar>
+</window>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/joinchat.js
@@ -0,0 +1,111 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2008
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+const autoJoinPref = "autoJoin";
+
+var joinChat = {
+ onload: function jc_onload() {
+ this.pcs = Components.classes["@instantbird.org/purple/core;1"]
+ .getService(Ci.purpleICoreService);
+ this.buildAccountList();
+ },
+
+ buildAccountList: function jc_buildAccountList() {
+ var accountList = document.getElementById("accountlist");
+ for (let acc in this.getAccounts()) {
+ if (!acc.connected)
+ continue;
+ var proto = acc.protocol;
+ if (proto.id != "prpl-irc")
+ continue;
+ var item = accountList.appendItem(acc.name, acc.id, proto.name);
+ item.setAttribute("image", "chrome://instantbird/skin/prpl/" + proto.id + ".png");
+ item.setAttribute("class", "menuitem-iconic");
+ }
+ if (!accountList.itemCount) {
+ document.getElementById("joinChatDialog").cancelDialog();
+ throw "No connected IRC account!";
+ }
+ accountList.selectedIndex = 0;
+ },
+
+ getValue: function jc_getValue(aId) {
+ var elt = document.getElementById(aId);
+ return elt.value;
+ },
+
+ join: function jc_join() {
+ var account = this.pcs.getAccountById(this.getValue("accountlist"));
+ var name = this.getValue("name")
+ var conv = account.joinChat(name);
+
+ if (document.getElementById("autojoin").checked) {
+ var prefBranch = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Ci.nsIPrefService)
+ .getBranch("messenger.account." + account.id + ".");
+ var autojoin = [ ];
+ if (prefBranch.prefHasUserValue(autoJoinPref)) {
+ var prefValue = prefBranch.getCharPref(autoJoinPref);
+ if (prefValue)
+ autojoin = prefValue.split(",");
+ }
+
+ if (autojoin.indexOf(name) == -1) {
+ autojoin.push(name);
+ prefBranch.setCharPref(autoJoinPref, autojoin.join(","));
+ }
+ }
+
+ // if the conversation is being created, |conv| will be null
+ // here. The new-conversation notification should be used to focus
+ // it when done. If it is already opened, we should focus it now.
+ if (!conv)
+ return;
+
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var convWindow = wm.getMostRecentWindow("Messenger:convs");
+ if (convWindow) {
+ convWindow.msgObserver.focusConv(conv);
+ convWindow.focus();
+ }
+ },
+
+ getAccounts: function jc_getAccounts() {
+ return getIter(this.pcs.getAccounts, Ci.purpleIAccount);
+ }
+};
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/joinchat.xul
@@ -0,0 +1,79 @@
+<?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 the Instantbird messenging client, released
+ - 2007.
+ -
+ - The Initial Developer of the Original Code is
+ - Florian QUEZE <florian@instantbird.org>.
+ - Portions created by the Initial Developer are Copyright (C) 2008
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - 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 ***** -->
+
+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
+<?xml-stylesheet href="chrome://instantbird/skin/account.css" type="text/css"?>
+
+<!DOCTYPE window SYSTEM "chrome://instantbird/locale/joinChat.dtd">
+
+<dialog
+ id = "joinChatDialog"
+ title = "&joinChatWindow.title;"
+ buttons= "accept,cancel"
+ width = "300"
+ height = "150"
+ xmlns = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload = "joinChat.onload()"
+ ondialogaccept="joinChat.join()">
+ <script type="application/javascript" src="chrome://instantbird/content/utilities.js"/>
+ <script type="application/javascript" src="chrome://instantbird/content/joinchat.js"/>
+
+ <grid>
+ <columns>
+ <column/>
+ <column flex="1"/>
+ </columns>
+ <rows>
+ <row id="nameBox">
+ <label value="&name.label;" control="name"/>
+ <textbox id="name"/>
+ </row>
+ <row id="accountBox">
+ <label value="&account.label;" control="accountlist"/>
+ <menulist id="accountlist"/>
+ </row>
+ <row>
+ <separator class="thin"/>
+ </row>
+ <row id="autojoinBox">
+ <spacer/>
+ <checkbox label="&autojoin.label;" accesskey="&autojoin.accesskey;" id="autojoin"/>
+ </row>
+ </rows>
+ </grid>
+</dialog>
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/menus.js
@@ -0,0 +1,127 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+const addonManagerWindow = "chrome://mozapps/content/extensions/extensions.xul?type=extensions";
+const accountManagerWindow = "chrome://instantbird/content/accounts.xul";
+const blistWindow = "chrome://instantbird/content/blist.xul";
+const addBuddyWindow = "chrome://instantbird/content/addbuddy.xul";
+const joinChatWindow = "chrome://instantbird/content/joinchat.xul";
+const aboutWindow = "chrome://instantbird/content/aboutDialog.xul";
+const convWindow = "chrome://instantbird/content/instantbird.xul";
+
+var menus = {
+ focus: function menu_focus(aWindowType) {
+ var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+ var win = wm.getMostRecentWindow(aWindowType);
+ if (win)
+ win.focus();
+ return win;
+ },
+
+ about: function menu_about() {
+ if (!this.focus("Messenger:About"))
+ window.open(aboutWindow, "About",
+ "chrome,resizable=no,minimizable=no,centerscreen");
+ },
+
+ accounts: function menu_accounts() {
+ if (!this.focus("Messenger:Accounts"))
+ window.open(accountManagerWindow, "Accounts",
+ "chrome,resizable");
+ },
+
+ addons: function menu_addons() {
+ if (!this.focus("Extension:Manager"))
+ window.open(addonManagerWindow, "Addons",
+ "chrome,menubar,extra-chrome,toolbar,dialog=no,resizable");
+ },
+
+ addBuddy: function menu_addBuddy() {
+ window.openDialog(addBuddyWindow, "",
+ "chrome,modal,titlebar,centerscreen");
+ },
+
+ joinChat: function menu_joinChat() {
+ window.openDialog(joinChatWindow, "",
+ "chrome,modal,titlebar,centerscreen");
+ },
+
+ getAway: function menu_getAway() {
+ buddyList.getAway();
+ },
+
+ toggleSounds: function menu_toggleSounds() {
+ var checked = document.getElementById("soundsMenuItem")
+ .getAttribute("checked") == "true";
+ this._prefBranch.setBoolPref(soundsPref, checked);
+ },
+
+ uninit: function menu_uninit() {
+ menus._prefBranch.removeObserver(soundsPref, menus);
+ },
+
+ init: function menu_init() {
+ var branch = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Ci.nsIPrefService)
+ .getBranch(optPrefBranch);
+ branch.QueryInterface(Ci.nsIPrefBranch2);
+ menus._prefBranch = branch;
+
+ branch.addObserver(soundsPref, menus, false);
+ var menuitem = document.getElementById("soundsMenuItem");
+ if (branch.getBoolPref(soundsPref))
+ menuitem.setAttribute("checked", "true");
+ else
+ menuitem.removeAttribute("checked");
+
+ this.addEventListener("unload", menus.uninit, false);
+ },
+
+ observe: function menu_observe(aSubject, aTopic, aData) {
+ if (aTopic != "nsPref:changed" || aData != soundsPref)
+ return;
+
+ var menuitem = document.getElementById("soundsMenuItem");
+ if (this._prefBranch.getBoolPref(soundsPref))
+ menuitem.setAttribute("checked", "true");
+ else
+ menuitem.removeAttribute("checked");
+ }
+};
+
+this.addEventListener("load", menus.init, false);
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/sound.js
@@ -0,0 +1,151 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+const optPrefBranch = "messenger.options.";
+const soundsPref = "playSounds";
+
+var soundHelper = {
+ soundFiles: {
+ incoming: "chrome://instantbird/skin/sounds/receive.wav",
+ outgoing: "chrome://instantbird/skin/sounds/send.wav",
+ login: "chrome://instantbird/skin/sounds/login.wav",
+ logout: "chrome://instantbird/skin/sounds/logout.wav",
+ alert: "chrome://instantbird/skin/sounds/alert.wav"
+ },
+ _soundUri: { },
+ _playingEvents: [ ],
+
+ _muted: false,
+ get muted() {
+ return this._muted;
+ },
+ set muted(val) {
+ this._muted = val;
+ if (val)
+ this._playingEvents = [ ];
+ },
+
+ get _sound() {
+ var sound = Components.classes["@mozilla.org/sound;1"]
+ .createInstance(Ci.nsISound);
+ sound.init();
+
+ delete this._sound;
+ return (this._sound = sound);
+ },
+
+ _play: function sh__play() {
+ if (this._muted)
+ return;
+
+ var uri = soundHelper._soundUri[soundHelper._playingEvents[0]];
+ soundHelper._sound.play(uri);
+ soundHelper._playingEvents.shift();
+ if (soundHelper._playingEvents.length)
+ setTimeout(soundHelper._play, 0);
+ },
+
+ play: function sh_play(aEvent) {
+ if (this._muted)
+ return;
+
+ if (!(aEvent in this._soundUri)) {
+ if (!(aEvent in this.soundFiles))
+ throw "bad sound event";
+ this._soundUri[aEvent] = makeURI(this.soundFiles[aEvent]);
+ }
+
+ if (this._playingEvents.indexOf(aEvent) == -1)
+ if (this._playingEvents.push(aEvent) == 1)
+ setTimeout(this._play, 0);
+ }
+};
+
+const soundEvents = ["buddy-signed-on",
+ "buddy-signed-off",
+ "new-text"];
+
+var soundObserver = {
+ observe: function so_observe(aObject, aTopic, aMsg) {
+ switch(aTopic) {
+ case "buddy-signed-on":
+ soundHelper.play("login");
+ break;
+
+ case "buddy-signed-off":
+ soundHelper.play("logout");
+ break;
+
+ case "new-text":
+ aObject.QueryInterface(Ci.purpleIMessage);
+ if (aObject.incoming && !aObject.system) {
+ if (!aObject.conversation.isChat || aObject.containsNick)
+ soundHelper.play("incoming");
+ }
+ else
+ if (aObject.outgoing)
+ soundHelper.play("outgoing");
+ break;
+
+ case "nsPref:changed":
+ if (aMsg == soundsPref)
+ soundHelper.muted = !this._prefBranch.getBoolPref(soundsPref);
+ break;
+
+ default:
+ throw "bad notification";
+ }
+ },
+ load: function so_load() {
+ addObservers(soundObserver, soundEvents);
+ soundObserver._prefBranch =
+ Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Ci.nsIPrefService)
+ .getBranch(optPrefBranch);
+ soundObserver._prefBranch.QueryInterface(Ci.nsIPrefBranch2);
+ soundObserver._prefBranch.addObserver(soundsPref, soundObserver, false);
+ soundHelper.muted = !soundObserver._prefBranch.getBoolPref(soundsPref);
+
+ this.addEventListener("unload", soundObserver.unload, false);
+ },
+ unload: function so_unload() {
+ removeObservers(soundObserver, soundEvents);
+ soundObserver._prefBranch.removeObserver(soundsPref, soundObserver);
+ }
+};
+
+this.addEventListener("load", soundObserver.load, false);
new file mode 100644
--- /dev/null
+++ b/im/base/content/instantbird/utilities.js
@@ -0,0 +1,89 @@
+/* ***** 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 the Instantbird messenging client, released
+ * 2007.
+ *
+ * The Initial Developer of the Original Code is
+ * Florian QUEZE <florian@instantbird.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2007
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * 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 ***** */
+
+const Cc = Components.classes;
+const Ci = Components.interfaces;
+
+function getIter(aGetEnumFct, aIface)
+{
+ var enumerator = aGetEnumFct();
+ while (enumerator.hasMoreElements()) {
+ let item = enumerator.getNext();
+ yield item.QueryInterface(aIface);
+ }
+}
+
+function getObserverService()
+{
+ return Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
+}
+
+function addObservers(aObserver, aTopics)
+{
+ var observerService = getObserverService();
+ for (let i = 0; i < aTopics.length; ++i)
+ observerService.addObserver(aObserver, aTopics[i], false);
+}
+
+function removeObservers(aObserver, aTopics)
+{
+ var observerService = getObserverService();
+ for (let i = 0; i < aTopics.length; ++i)
+ observerService.removeObserver(aObserver, aTopics[i]);
+}
+
+function makeURI(aURL, aOriginCharset, aBaseURI)
+{
+ var ioService = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Ci.nsIIOService);
+ return ioService.newURI(aURL, aOriginCharset, aBaseURI);
+}
+
+function logMsg(aString)
+{
+ Components.classes["@mozilla.org/consoleservice;1"]
+ .getService(Ci.nsIConsoleService)
+ .logStringMessage(aString);
+}
+
+function setText(aElt, aTxt)
+{
+ if (aElt.hasChildNodes())
+ aElt.removeChild(aElt.firstChild);
+ var textNode = document.createTextNode(aTxt);
+ aElt.appendChild(textNode);
+}
new file mode 100644
--- /dev/null
+++ b/im/base/content/jar.mn
@@ -0,0 +1,45 @@
+instantbird.jar:
+% content branding %content/branding/ xpcnativewrappers=yes
+ content/branding/about-credits.png (branding/about-credits.png)
+ content/branding/about-footer.png (branding/about-footer.png)
+ content/branding/about-logo.png (branding/about-logo.png)
+ content/branding/icon64.png (branding/icon64.png)
+% content instantbird %content/instantbird/ xpcnativewrappers=yes
+ content/instantbird/aboutDialog.css (instantbird/aboutDialog.css)
+ content/instantbird/aboutDialog.xul (instantbird/aboutDialog.xul)
+ content/instantbird/account.js (instantbird/account.js)
+ content/instantbird/accounts.css (instantbird/accounts.css)
+ content/instantbird/accounts.js (instantbird/accounts.js)
+ content/instantbird/accounts.xul (instantbird/accounts.xul)
+ content/instantbird/accountWizard.js (instantbird/accountWizard.js)
+ content/instantbird/accountWizard.xul (instantbird/accountWizard.xul)
+ content/instantbird/account.xml (instantbird/account.xml)
+ content/instantbird/account.xul (instantbird/account.xul)
+ content/instantbird/addbuddy.js (instantbird/addbuddy.js)
+ content/instantbird/addbuddy.xul (instantbird/addbuddy.xul)
+ content/instantbird/anim.xml (instantbird/anim.xml)
+ content/instantbird/blist.css (instantbird/blist.css)
+ content/instantbird/blist.js (instantbird/blist.js)
+ content/instantbird/blist.xul (instantbird/blist.xul)
+ content/instantbird/buddy.xml (instantbird/buddy.xml)
+ content/instantbird/conversation.xml (instantbird/conversation.xml)
+ content/instantbird/conv.html (instantbird/conv.html)
+ content/instantbird/credits.xhtml (instantbird/credits.xhtml)
+ content/instantbird/group.xml (instantbird/group.xml)
+ content/instantbird/instantbird.css (instantbird/instantbird.css)
+ content/instantbird/instantbird.js (instantbird/instantbird.js)
+ content/instantbird/instantbird.xul (instantbird/instantbird.xul)
+ content/instantbird/joinchat.js (instantbird/joinchat.js)
+ content/instantbird/joinchat.xul (instantbird/joinchat.xul)
+ content/instantbird/menus.js (instantbird/menus.js)
+ content/instantbird/sound.js (instantbird/sound.js)
+ content/instantbird/utilities.js (instantbird/utilities.js)
+
+#ifdef DEBUG
+debug.jar:
+% content debug %content/debug/ xpcnativewrappers=yes
+% overlay chrome://instantbird/content/blist.xul chrome://debug/content/debug.xul
+ content/debug/debug.js (debug/debug.js)
+ content/debug/debug.xul (debug/debug.xul)
+#endif
+
new file mode 100644
--- /dev/null
+++ b/im/build.mk
@@ -0,0 +1,20 @@
+ifndef LIBXUL_SDK
+include $(topsrcdir)/toolkit/toolkit-tiers.mk
+endif
+
+TIERS += app
+
+tier_app_dirs += \
+ purple \
+ instantbird \
+ $(NULL)
+
+
+installer:
+ @$(MAKE) -C instantbird/installer installer
+
+package:
+ @$(MAKE) -C instantbird/installer
+
+install::
+ @$(MAKE) -C instantbird/installer install
new file mode 100644
--- /dev/null
+++ b/im/config/version.txt
@@ -0,0 +1,2 @@
+0.1.2pre
+
new file mode 100644
--- /dev/null
+++ b/im/confvars.sh
@@ -0,0 +1,9 @@
+MOZ_APP_NAME=instantbird
+MOZ_APP_DISPLAYNAME=Instantbird
+MOZ_APP_VERSION=0.1.2pre
+MOZ_XUL_APP=1
+MOZ_ENABLE_LIBXUL=1
+MOZ_XULRUNNER=1
+MOZ_NO_XPCOM_OBSOLETE=1
+MOZ_UPDATER=1
+MOZ_PLACES=
new file mode 100644
--- /dev/null
+++ b/im/installer/Makefile.in
@@ -0,0 +1,126 @@
+# ***** 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 the Mozilla Browser code.
+#
+# The Initial Developer of the Original Code is
+# IBM Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2004
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Brian Ryner <bryner@brianryner.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 *****
+
+DEPTH = ../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+NO_PKG_FILES = \
+ TestGtkEmbed \
+ bloaturls.txt \
+ codesighs* \
+ elf-dynstr-gc \
+ instantbird-bin.elf \
+ instantbird-config \
+ mangle* \
+ maptsv* \
+ mfc* \
+ mkdepend* \
+ msdump* \
+ msmap* \
+ nm2tsv* \
+ nsinstall* \
+ regxpcom* \
+ res/samples \
+ res/throbber \
+ shlibsign* \
+ winEmbed.exe \
+ xpcshell* \
+ xpidl* \
+ xpt_dump* \
+ xpt_link* \
+ dirver* \
+ plugins \
+ res/arrow.gif \
+ res/arrowd.gif \
+ res/bloatcycle.html \
+ res/html \
+ res/loading-image.gif \
+ res/rdf \
+ res/viewer.properties \
+ res/viewsource.css \
+ chrome/chromelist.txt \
+ chrome/embed-sample.jar \
+ PalmSyncInstall.exe \
+ components/libgkplugin.so \
+ components/gkplugin.dll \
+ $(NULL)
+
+include $(topsrcdir)/config/rules.mk
+
+MOZ_PKG_REMOVALS = $(srcdir)/removed-files.in
+
+ifneq (,$(BUILD_STATIC_LIBS)$(MOZ_ENABLE_LIBXUL))
+ifeq (WINNT,$(OS_ARCH))
+MOZ_PKG_MANIFEST_P = $(srcdir)/windows/packages-static
+endif
+else
+$(error you need a "--enable-static or --enable-libxul" build to create an installer)
+endif
+
+MOZ_NONLOCALIZED_PKG_LIST = \
+ xpcom \
+ instantbird \
+ $(NULL)
+
+MOZ_LOCALIZED_PKG_LIST = $(AB_CD)
+
+DEFINES += -DAB_CD=$(AB_CD)
+
+ifdef MOZ_PKG_MANIFEST_P
+MOZ_PKG_MANIFEST = packages-static
+
+$(MOZ_PKG_MANIFEST): $(MOZ_PKG_MANIFEST_P)
+ $(PERL) $(topsrcdir)/config/preprocessor.pl $(DEFINES) $(ACDEFINES) $< > $@
+endif
+
+ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))
+MOZ_PKG_MAC_DSSTORE=branding/dsstore
+MOZ_PKG_MAC_BACKGROUND=branding/background.png
+MOZ_PKG_MAC_ICON=branding/disk.icns
+#MOZ_PKG_MAC_RSRC=branding/license.r
+endif
+
+include $(topsrcdir)/toolkit/mozapps/installer/packager.mk
+
+installer: removed-files
+ifdef INSTALLER_DIR
+ $(MAKE) -C $(INSTALLER_DIR)
+endif
new file mode 100644
--- /dev/null
+++ b/im/installer/removed-files.in
@@ -0,0 +1,306 @@
+components/xpti.dat
+components/compreg.dat
+components/accessibility.dll
+components/appcomps.dll
+components/appshell.dll
+components/caps.dll
+components/chrome.dll
+components/composer.dll
+components/docshell.dll
+components/editor.dll
+components/embedcomponents.dll
+components/gkgfxwin.dll
+components/gklayout.dll
+components/gkparser.dll
+components/gkwidget.dll
+components/i18n.dll
+components/imgicon.dll
+components/imglib2.dll
+components/import.dll
+components/mail.dll
+components/mork.dll
+components/mozfind.dll
+components/mozldap.dll
+components/msgMapi.dll
+components/msgsmime.dll
+components/myspell.dll
+components/necko.dll
+components/necko2.dll
+components/nsprefm.dll
+components/pipboot.dll
+components/pipnss.dll
+components/pippki.dll
+components/profile.dll
+components/profilemigration.dll
+components/rdf.dll
+components/spellchk.dll
+components/txmgr.dll
+components/uconv.dll
+components/wallet.dll
+components/webbrwsr.dll
+components/wlltvwrs.dll
+components/xmlextras.dll
+components/xpc3250.dll
+components/xppref32.dll
+nsldap32v50.dll
+nsldappr32v50.dll
+#ifdef XP_WIN
+components/accessibility-msaa.xpt
+components/accessibility.xpt
+components/addrbook.xpt
+components/alerts.xpt
+components/appshell.xpt
+components/caps.xpt
+components/chardet.xpt
+components/commandhandler.xpt
+components/composer.xpt
+components/content_base.xpt
+components/content_html.xpt
+components/content_htmldoc.xpt
+components/content_xmldoc.xpt
+components/content_xslt.xpt
+components/crashreporter.xpt
+components/docshell_base.xpt
+components/dom.xpt
+components/dom_base.xpt
+components/dom_core.xpt
+components/dom_css.xpt
+components/dom_events.xpt
+components/dom_html.xpt
+components/dom_offline.xpt
+components/dom_range.xpt
+components/dom_stylesheets.xpt
+components/dom_traversal.xpt
+components/dom_views.xpt
+components/dom_xbl.xpt
+components/dom_xpath.xpt
+components/dom_xul.xpt
+components/downloadmanager.xpt
+components/editor.xpt
+components/embed_base.xpt
+components/exthandler.xpt
+components/find.xpt
+components/gfx.xpt
+components/helperAppDlg.xpt
+components/htmlparser.xpt
+components/imgicon.xpt
+components/imglib2.xpt
+components/impComm4xMail.xpt
+components/import.xpt
+components/intl.xpt
+components/jar.xpt
+components/jsdservice.xpt
+components/jsurl.xpt
+components/layout_base.xpt
+components/layout_printing.xpt
+components/layout_xul.xpt
+components/layout_xul_tree.xpt
+components/locale.xpt
+components/lwbrk.xpt
+components/mailnews.xpt
+components/mailview.xpt
+components/mapihook.xpt
+components/mime.xpt
+components/mimetype.xpt
+components/mozbrwsr.xpt
+components/mozfind.xpt
+components/mozldap.xpt
+components/msgbase.xpt
+components/msgcompo.xpt
+components/msgdb.xpt
+components/msgimap.xpt
+components/msglocal.xpt
+components/msgnews.xpt
+components/msgsearch.xpt
+components/msgsmime.xpt
+components/necko.xpt
+components/necko_cache.xpt
+components/necko_cookie.xpt
+components/necko_data.xpt
+components/necko_dns.xpt
+components/necko_file.xpt
+components/necko_http.xpt
+components/necko_jar.xpt
+components/necko_res.xpt
+components/necko_strconv.xpt
+components/pipboot.xpt
+components/pipnss.xpt
+components/pippki.xpt
+components/pref.xpt
+components/prefmigr.xpt
+components/profile.xpt
+components/progressDlg.xpt
+components/proxyObject.xpt
+components/rdf.xpt
+components/signonviewer.xpt
+components/spellchecker.xpt
+components/txmgr.xpt
+components/txtsvc.xpt
+components/uconv.xpt
+components/unicharutil.xpt
+components/uriloader.xpt
+components/wallet.xpt
+components/webbrowserpersist.xpt
+components/webBrowser_core.xpt
+components/webshell_idls.xpt
+components/widget.xpt
+components/windowds.xpt
+components/windowwatcher.xpt
+components/winhooks.xpt
+components/xmlextras.xpt
+components/xpcom_base.xpt
+components/xpcom_components.xpt
+components/xpcom_ds.xpt
+components/xpcom_io.xpt
+components/xpcom_obsolete.xpt
+components/xpcom_thread.xpt
+components/xpcom_xpti.xpt
+components/xpcom.xpt
+components/xpconnect.xpt
+components/xpinstall.xpt
+components/xuldoc.xpt
+components/xultmpl.xpt
+components/downloadmanager.xpt
+#endif
+components/nsUnsetDefaultMail.js
+components/nsBackgroundUpdateService.js
+components/nsCloseAllWindows.js
+components/nsDownloadProgressListener.js
+components/xptitemp.dat
+component.reg
+chrome/installed-chrome.txt
+chrome/chrome.rdf
+chrome/app-chrome.manifest
+chrome/mail.jar
+chrome/qute.jar
+chrome/offline.jar
+chrome/offline.manifest
+chrome/en-US-mail.jar
+chrome/overlayinfo/
+defaults/pref/all.js
+defaults/pref/security-prefs.js
+defaults/pref/winpref.js
+defaults/pref/xpinstall.js
+defaults/pref/thunderbird.js
+defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
+defaults/profile/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/
+defaults/profile/extensions/Extensions.rdf
+defaults/profile/extensions/installed-extensions.txt
+defaults/profile/extensions/
+defaults/messenger/SpamAssassin.sfd
+defaults/messenger/SpamPal.sfd
+defaults/isp/rss.rdf
+defaults/isp/movemail.rdf
+defaults/isp/dotmac.rdf
+defaults/isp/en-US/rss.rdf
+defaults/isp/en-US/movemail.rdf
+defaults/isp/en-US/dotmac.rdf
+defaults/isp/en-US/
+defaults/isp/
+isp/gmail.rdf
+
+components/@DLL_PREFIX@xpcom_compat_c@DLL_SUFFIX@
+@DLL_PREFIX@xpcom_compat@DLL_SUFFIX@
+@DLL_PREFIX@zlib@DLL_SUFFIX@
+@DLL_PREFIX@xpistub@DLL_SUFFIX@
+#Remove Talkback files from old location (in case user updates from 1.0.x)
+components/BrandRes.dll
+components/fullsoft.dll
+components/master.ini
+components/qfaservices.dll
+components/qfaservices.xpt
+components/talkback-l10n.ini
+components/talkback.cnt
+components/talkback.exe
+components/talkback.hlp
+components/libqfaservices.so
+components/talkback/master.ini
+components/talkback/talkback
+components/talkback/talkback.so
+components/talkback/XTalkback.ad
+HSAPI.dll
+CondMgr.dll
+mozABConduit.dll
+components/palmsync.dll
+components/palmSync.xpt
+uninstall/UninstallThunderbird.exe
+uninstall/uninst.exe
+uninstall/uninstall.exe
+components/myspell/en-US.dic
+components/myspell/en-US.aff
+regxpcom.exe
+components/xmlextras.xpt
+res/cmessage.txt
+res/html/gopher-audio.gif
+res/html/gopher-binary.gif
+res/html/gopher-find.gif
+res/html/gopher-image.gif
+res/html/gopher-menu.gif
+res/html/gopher-movie.gif
+res/html/gopher-sound.gif
+res/html/gopher-telnet.gif
+res/html/gopher-text.gif
+res/html/gopher-unknown.gif
+extensions/talkback@mozilla.org/
+extensions/talkback@mozilla.org/install.rdf
+extensions/talkback@mozilla.org/chrome.manifest
+extensions/talkback@mozilla.org/components/qfaservices.xpt
+extensions/talkback@mozilla.org/components/@DLL_PREFIX@qfaservices@DLL_SUFFIX@
+#ifdef XP_WIN
+extensions/talkback@mozilla.org/components/BrandRes.dll
+extensions/talkback@mozilla.org/components/fullsoft.dll
+extensions/talkback@mozilla.org/components/master.ini
+extensions/talkback@mozilla.org/components/talkback-l10n.ini
+extensions/talkback@mozilla.org/components/talkback.cnt
+extensions/talkback@mozilla.org/components/talkback.exe
+extensions/talkback@mozilla.org/components/talkback.hlp
+extensions/talkback@mozilla.org/InstallDisabled
+#else
+#ifdef XP_MACOSX
+extensions/talkback@mozilla.org/components/talkback/master.ini
+extensions/talkback@mozilla.org/components/talkback/talkback@DLL_SUFFIX@
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Info.plist
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/MacOS/Talkback
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/pbdevelopment.plist
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/PkgInfo
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/delete.tiff
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/disable.tiff
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/enable.tiff
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/ArchivingSettings.nib/classes.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/ArchivingSettings.nib/info.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/ArchivingSettings.nib/objects.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/InfoPlist.strings
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/IntroWizard.nib/classes.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/IntroWizard.nib/info.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/IntroWizard.nib/objects.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/Localizable.strings
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/MainMenu.nib/objects.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/ProxySettings.nib/classes.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/ProxySettings.nib/info.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/ProxySettings.nib/objects.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/SendingSettings.nib/classes.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/SendingSettings.nib/info.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/English.lproj/SendingSettings.nib/objects.nib
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/KeyInfoKeys.plist
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/KeyInfoSections.plist
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/send.tiff
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/sort_ascending.tiff
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/sort_descending.tiff
+extensions/talkback@mozilla.org/components/talkback/Talkback.app/Contents/Resources/Talkback.icns
+#else
+extensions/talkback@mozilla.org/components/talkback/talkback
+extensions/talkback@mozilla.org/components/talkback/XTalkback.ad