NS_IMETHODIMP nsGNOMEShellService::GetDesktopBackgroundColor(uint32_t *aColor) { nsCOMPtr<nsIGSettingsService> gsettings(do_GetService(NS_GSETTINGSSERVICE_CONTRACTID)); nsCOMPtr<nsIGSettingsCollection> background_settings; if (gsettings) gsettings->GetCollectionForSchema(NS_LITERAL_CSTRING(OGDB_SCHEMA), getter_AddRefs(background_settings)); nsCString background; if (background_settings) background_settings->GetString(NS_LITERAL_CSTRING(OGDB_COLOR), background); else { nsCOMPtr<nsIGConfService> gconf(do_GetService(NS_GCONFSERVICE_CONTRACTID)); if (gconf) gconf->GetString(NS_LITERAL_CSTRING(DGB_COLOR), background); } if (background.IsEmpty()) return NS_ERROR_FAILURE; GdkColor color; NS_ENSURE_TRUE(gdk_color_parse(background.get(), &color), NS_ERROR_FAILURE); *aColor = COLOR_16_TO_8_BIT(color.red) << 16 | COLOR_16_TO_8_BIT(color.green) << 8 | COLOR_16_TO_8_BIT(color.blue); return NS_OK; }
NS_IMETHODIMP nsGNOMEShellService::GetDesktopBackgroundColor(PRUint32 *aColor) { nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID); nsCAutoString background; if (gconf) { gconf->GetString(NS_LITERAL_CSTRING(kDesktopColorKey), background); } if (background.IsEmpty()) { *aColor = 0; return NS_OK; } GdkColor color; gboolean success = gdk_color_parse(background.get(), &color); NS_ENSURE_TRUE(success, NS_ERROR_FAILURE); *aColor = COLOR_16_TO_8_BIT(color.red) << 16 | COLOR_16_TO_8_BIT(color.green) << 8 | COLOR_16_TO_8_BIT(color.blue); return NS_OK; }