Back to index

lightning-sunbird  0.9+nobinonly
nsSystemPrefFactory.cpp
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
00002 /* vim:expandtab:shiftwidth=4:tabstop=4:
00003  */
00004 /* ***** BEGIN LICENSE BLOCK *****
00005  * Version: NPL 1.1/GPL 2.0/LGPL 2.1
00006  *
00007  *
00008  * The contents of this file are subject to the Mozilla Public
00009  * License Version 1.1 (the "License"); you may not use this file
00010  * except in compliance with the License. You may obtain a copy of
00011  * the License at http://www.mozilla.org/MPL/
00012  *
00013  * Software distributed under the License is distributed on an "AS
00014  * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
00015  * implied. See the License for the specific language governing
00016  * rights and limitations under the License.
00017  *
00018  * The Original Code is mozilla.org code.
00019  *
00020  * The Initial Developer of the Original Code is Sun Microsystems, Inc.
00021  * Portions created by Sun Microsystems are Copyright (C) 2003 Sun
00022  * Microsystems, Inc. All Rights Reserved.
00023  *
00024  * Original Author: Bolian Yin (bolian.yin@sun.com)
00025  *
00026  * Contributor(s):
00027  *
00028  * Alternatively, the contents of this file may be used under the terms of
00029  * either the GNU General Public License Version 2 or later (the "GPL"), or
00030  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
00031  * in which case the provisions of the GPL or the LGPL are applicable instead
00032  * of those above. If you wish to allow use of your version of this file only
00033  * under the terms of either the GPL or the LGPL, and not to allow others to
00034  * use your version of this file under the terms of the NPL, indicate your
00035  * decision by deleting the provisions above and replace them with the notice
00036  * and other provisions required by the GPL or the LGPL. If you do not delete
00037  * the provisions above, a recipient may use your version of this file under
00038  * the terms of any one of the NPL, the GPL or the LGPL.
00039  *
00040  * ***** END LICENSE BLOCK ***** */
00041 
00042 #include "nsICategoryManager.h"
00043 #include "nsIGenericFactory.h"
00044 #include "nsSystemPref.h"
00045 #include "nsSystemPrefService.h"
00046 
00047 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSystemPref, Init)
00048 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsSystemPrefService, Init)
00049 
00050 // Registering nsSystemPref module as part of the app-startup category to get 
00051 // it instantiated.
00052 
00053 static NS_METHOD
00054 RegisterSystemPref(nsIComponentManager *aCompMgr,
00055                    nsIFile *aPath,
00056                    const char *registryLocation,
00057                    const char *componentType,
00058                    const nsModuleComponentInfo *info)
00059 {
00060     nsresult rv;
00061 
00062     nsCOMPtr<nsICategoryManager>
00063         categoryManager(do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv));
00064     if (NS_SUCCEEDED(rv)) {
00065         rv = categoryManager->AddCategoryEntry(APPSTARTUP_CATEGORY,
00066                                                "SystemPref Module",
00067                                                NS_SYSTEMPREF_CONTRACTID,
00068                                                PR_TRUE, PR_TRUE, nsnull);
00069     }
00070 
00071     return rv;
00072 }
00073 
00074 static NS_METHOD 
00075 UnRegisterSystemPref(nsIComponentManager *aCompMgr,
00076                      nsIFile *aPath,
00077                      const char *registryLocation,
00078                      const nsModuleComponentInfo *info)
00079 {
00080     nsresult rv;
00081     nsCOMPtr<nsICategoryManager>
00082         categoryManager(do_GetService(NS_CATEGORYMANAGER_CONTRACTID, &rv));
00083     if (NS_SUCCEEDED(rv)) {
00084         rv = categoryManager->DeleteCategoryEntry(APPSTARTUP_CATEGORY,
00085                                                   "SystemPref Module",
00086                                                   PR_TRUE);
00087     }
00088     return rv;
00089 }
00090 
00091 static const nsModuleComponentInfo components[] = {
00092     { NS_SYSTEMPREF_CLASSNAME,
00093       NS_SYSTEMPREF_CID,
00094       NS_SYSTEMPREF_CONTRACTID,
00095       nsSystemPrefConstructor,
00096       RegisterSystemPref,
00097       UnRegisterSystemPref,
00098     },
00099     { NS_SYSTEMPREF_SERVICE_CLASSNAME,
00100       NS_SYSTEMPREF_SERVICE_CID,
00101       NS_SYSTEMPREF_SERVICE_CONTRACTID,
00102       nsSystemPrefServiceConstructor,
00103     },
00104 };
00105 
00106 NS_IMPL_NSGETMODULE(nsSystemPrefModule, components)