From 089fc07d207c71ce1401e72f09c31ad8c45872e2 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:44:58 -0500 Subject: Second Life viewer sources 1.17.0.12 --- linden/indra/newview/llpanelweb.cpp | 368 ++++++++---------------------------- 1 file changed, 75 insertions(+), 293 deletions(-) (limited to 'linden/indra/newview/llpanelweb.cpp') diff --git a/linden/indra/newview/llpanelweb.cpp b/linden/indra/newview/llpanelweb.cpp index e1e4247..5b0b7e6 100644 --- a/linden/indra/newview/llpanelweb.cpp +++ b/linden/indra/newview/llpanelweb.cpp @@ -1,8 +1,8 @@ /** - * @file llpanelweb.cpp - * @brief Web browser options + * @file LLPanelWeb.cpp + * @brief Network preferences panel * - * Copyright (c) 2003-2007, Linden Research, Inc. + * Copyright (c) 2001-2007, Linden Research, Inc. * * Second Life Viewer Source Code * The source code in this file ("Source Code") is provided by Linden Lab @@ -28,345 +28,127 @@ #include "llviewerprecompiledheaders.h" +// file include #include "llpanelweb.h" +// linden library includes +#include "llerror.h" +#include "llrect.h" +#include "llstring.h" + +// project includes #include "llbutton.h" -#include "llscrolllistctrl.h" +#include "llui.h" +#include "lluictrlfactory.h" #include "llcheckboxctrl.h" -#include "llradiogroup.h" -#include "lllineeditor.h" -#include "llfirstuse.h" #include "llviewercontrol.h" -#include "llmediaengine.h" -#include "llstartup.h" -#include "llurlwhitelist.h" #include "llvieweruictrlfactory.h" +#include "llviewerwindow.h" + +#if LL_LIBXUL_ENABLED +#include "llmozlib.h" +#endif // LL_LIBXUL_ENABLED LLPanelWeb::LLPanelWeb() -: LLPanel("Web Panel"), - mExternalBrowserCheck(NULL), - mBrowserHomePage(NULL), - mWebPagesOnPrimsCheck(NULL), - mTrustedSitesList(NULL), - mProxyEnabled(NULL), - mProxyAddress(NULL), - mProxyPort(NULL), - mProxySocks45(NULL), - mProxyExclusions(NULL), - mAddTrustedSite(NULL), - mTrustedSiteEntry(NULL), - mRemTrustedSite(NULL) { - mLoggedIn = ( gStartupState >= STATE_STARTED ); + gUICtrlFactory->buildPanel(this, "panel_preferences_web.xml"); } -//----------------------------------------------------------------------------- -// postBuild() -//----------------------------------------------------------------------------- BOOL LLPanelWeb::postBuild() { - mExternalBrowserCheck = LLViewerUICtrlFactory::getCheckBoxByName(this, "external_browser_check"); - mExternalBrowserCheck->setCallbackUserData ( this ); - mExternalBrowserCheck->setCommitCallback ( onCommitExternalBrowser ); - - mWebPagesOnPrimsCheck = LLViewerUICtrlFactory::getCheckBoxByName(this, "web_pages_on_prims_check"); - - mBrowserHomePage = LLViewerUICtrlFactory::getLineEditorByName(this, "home_page"); - - mProxyEnabled = LLViewerUICtrlFactory::getCheckBoxByName(this, "proxy_enabled"); - mProxyEnabled->setCallbackUserData ( this ); - mProxyEnabled->setCommitCallback ( onCommitProxyEnabled ); - mProxyAddress = LLViewerUICtrlFactory::getLineEditorByName(this, "proxy_address"); - mProxyPort = LLViewerUICtrlFactory::getLineEditorByName(this, "proxy_port"); - mProxySocks45 = LLViewerUICtrlFactory::getRadioGroupByName(this, "socks_4_5"); - mProxyExclusions = LLViewerUICtrlFactory::getLineEditorByName(this, "proxy_exclusions"); - - mAddTrustedSite = LLViewerUICtrlFactory::getButtonByName(this, "add_trusted"); - mAddTrustedSite->setEnabled ( FALSE ); - mAddTrustedSite->setCallbackUserData ( this ); - mAddTrustedSite->setClickedCallback ( onAddTrustedSite ); - - mTrustedSitesList = LLViewerUICtrlFactory::getScrollListByName(this, "trusted_sites_list"); - mTrustedSitesList->setAllowMultipleSelection ( TRUE ); - mTrustedSitesList->setCommitOnSelectionChange ( TRUE ); - mTrustedSitesList->setCallbackUserData ( this ); - mTrustedSitesList->setCommitCallback ( onTrustedSiteListCommit ); - - mTrustedSiteEntry = LLViewerUICtrlFactory::getLineEditorByName(this, "trusted_site_entry"); - mTrustedSiteEntry->setCallbackUserData ( this ); - mTrustedSiteEntry->setKeystrokeCallback ( onTrustedSiteEntryKeystroke ); - - mRemTrustedSite = LLViewerUICtrlFactory::getButtonByName(this, "rem_trusted"); - mRemTrustedSite->setEnabled ( FALSE ); - mRemTrustedSite->setCallbackUserData ( this ); - mRemTrustedSite->setClickedCallback ( onRemTrustedSite ); - - BOOL use_external_browser = gSavedSettings.getBOOL("UseExternalBrowser"); - mExternalBrowserCheck->set(use_external_browser); - - LLString strVal = gSavedSettings.getString ( "BrowserHomePage" ); - mBrowserHomePage->setText ( strVal ); - - BOOL boolVal = gSavedSettings.getBOOL ( "BrowserProxyEnabled" ); - mProxyEnabled->set ( boolVal ); - - strVal = gSavedSettings.getString ( "BrowserProxyAddress" ); - mProxyAddress->setText ( strVal ); - - S32 port = gSavedSettings.getS32 ( "BrowserProxyPort" ); - std::stringstream codec; - codec << port; - mProxyPort->setText ( codec.str () ); - - S32 numVal = gSavedSettings.getS32 ( "BrowserProxySocks45" ); - mProxySocks45->setSelectedIndex ( numVal - 4 ); - - strVal = gSavedSettings.getString ( "BrowserProxyExclusions" ); - mProxyExclusions->setText ( strVal ); - - // switch on/off UI depending on state of 'use external browser' checkbox - configExternaBrowserEnabledUI ( mExternalBrowserCheck->get() ); - - // switch on/off UI depending on which type of proxy is chosen (only if internal browseR) - if ( ! mExternalBrowserCheck->get() ) - configProxyEnabledUI ( mProxyEnabled->get() ); + childSetAction( "clear_cache", onClickClearCache, this ); + childSetAction( "clear_cookies", onClickClearCookies, this ); + childSetEnabled( "connection_port", gSavedSettings.getBOOL( "CookiesEnabled" ) ); + childSetCommitCallback( "cookies_enabled", onCommitCookies, this ); - BOOL use_web_pages_on_prims = gSavedSettings.getBOOL("UseWebPagesOnPrims"); - mWebPagesOnPrimsCheck->set(use_web_pages_on_prims); - - // load the list of trusted sites - loadTrustedSiteList (); + refresh(); return TRUE; } -// helper function to enable/disable proxy UI based on what type of proxy is selected -void LLPanelWeb::configProxyEnabledUI ( BOOL enabled ) +LLPanelWeb::~LLPanelWeb() { - if ( enabled ) - { - mProxyAddress->setEnabled ( TRUE ); - mProxyPort->setEnabled ( TRUE ); - mProxySocks45->setEnabled ( TRUE); - mProxyExclusions->setEnabled ( TRUE ); - } - else - { - mProxyAddress->setEnabled ( FALSE ); - mProxyPort->setEnabled ( FALSE ); - mProxySocks45->setEnabled ( FALSE ); - mProxyExclusions->setEnabled ( FALSE ); - }; + // Children all cleaned up by default view destructor. } -// helper function to enable/disable proxy UI based on what type of proxy is selected -void LLPanelWeb::configExternaBrowserEnabledUI ( BOOL enabled ) +void LLPanelWeb::apply() { - if ( enabled ) - { - mBrowserHomePage->setEnabled ( FALSE ); - mWebPagesOnPrimsCheck->setEnabled ( FALSE ); - mTrustedSitesList->setEnabled ( FALSE ); - mProxyEnabled->setEnabled ( FALSE ); - mProxyAddress->setEnabled ( FALSE ); - mProxyPort->setEnabled ( FALSE ); - mProxySocks45->setEnabled ( FALSE ); - mProxyExclusions->setEnabled ( FALSE ); - mAddTrustedSite->setEnabled ( FALSE ); - mTrustedSiteEntry->setEnabled ( FALSE ); - mRemTrustedSite->setEnabled ( FALSE ); - } - else - { - mBrowserHomePage->setEnabled ( TRUE ); - mWebPagesOnPrimsCheck->setEnabled ( TRUE ); - mTrustedSitesList->setEnabled ( TRUE ); - mProxyEnabled->setEnabled ( TRUE ); - mProxyAddress->setEnabled ( TRUE ); - mProxyPort->setEnabled ( TRUE ); - mProxySocks45->setEnabled ( TRUE); - mProxyExclusions->setEnabled ( TRUE ); - mAddTrustedSite->setEnabled ( TRUE ); - mTrustedSiteEntry->setEnabled ( TRUE ); - - // only set this to enabled if there is text in the entry widget - if ( mTrustedSiteEntry->getLength() ) - mAddTrustedSite->setEnabled ( TRUE ); - else - mAddTrustedSite->setEnabled ( FALSE ); - - // only set this to enabled if something is selected in the list of trusted sites - if ( mTrustedSitesList->getFirstSelected () ) - mRemTrustedSite->setEnabled ( TRUE ); - else - mRemTrustedSite->setEnabled ( FALSE ); - }; - - // final check - disable the white list options if not - // logged in since they are on a per-user basis - if ( ! mLoggedIn ) - { - mTrustedSitesList->setEnabled ( FALSE ); - mAddTrustedSite->setEnabled ( FALSE ); - mTrustedSiteEntry->setEnabled ( FALSE ); - mRemTrustedSite->setEnabled ( FALSE ); - }; } -void LLPanelWeb::onCommitExternalBrowser ( LLUICtrl* ctrl, void* data ) +void LLPanelWeb::refresh() { - LLPanelWeb* self = (LLPanelWeb*)data; + LLPanel::refresh(); - // update state of UI when proxy type changes - BOOL value = self->mExternalBrowserCheck->get (); - self->configExternaBrowserEnabledUI ( value ); -} + mCookiesEnabled = gSavedSettings.getBOOL("CookiesEnabled"); -void LLPanelWeb::onCommitProxyEnabled ( LLUICtrl* ctrl, void* data ) -{ - LLPanelWeb* self = (LLPanelWeb*)data; +#if LL_LIBXUL_ENABLED + llinfos << "setting cookies enabled to " << mCookiesEnabled << llendl; + LLMozLib::getInstance()->enableCookies( mCookiesEnabled ); +#endif // LL_LIBXUL_ENABLED - // update state of UI when proxy type changes - BOOL value = self->mProxyEnabled->get (); - self->configProxyEnabledUI ( value ); } -void LLPanelWeb::onTrustedSiteListCommit ( LLUICtrl* ctrl, void* data ) -{ - LLPanelWeb* self = (LLPanelWeb*)data; - - // something was selected so enable the REMOVE button - self->mRemTrustedSite->setEnabled ( TRUE ); -}; - -void LLPanelWeb::onTrustedSiteEntryKeystroke ( LLLineEditor* caller, void* data ) +void LLPanelWeb::cancel() { - LLPanelWeb* self = (LLPanelWeb*)data; +#if LL_LIBXUL_ENABLED + llinfos << "setting cookies enabled to " << mCookiesEnabled << llendl; + LLMozLib::getInstance()->enableCookies( mCookiesEnabled ); +#endif // LL_LIBXUL_ENABLED - if ( caller->getLength () ) - self->mAddTrustedSite->setEnabled ( TRUE ); - else - self->mAddTrustedSite->setEnabled ( FALSE ); + gSavedSettings.setBOOL( "CookiesEnabled", mCookiesEnabled ); } -// add site to list -void LLPanelWeb::onAddTrustedSite ( void* data ) +// static +void LLPanelWeb::onClickClearCache(void*) { - LLPanelWeb* self = (LLPanelWeb*)data; - - if ( self->mTrustedSiteEntry->getLength () ) - { - // add to list - self->mTrustedSitesList->addSimpleItem ( self->mTrustedSiteEntry->getText () ); - - // remove from entry field - self->mTrustedSiteEntry->clear (); - - // nothing in entry field so disable add button - self->mAddTrustedSite->setEnabled ( FALSE ); - }; +#if LL_LIBXUL_ENABLED + gViewerWindow->alertXml("ConfirmClearBrowserCache", callback_clear_browser_cache, 0); +#endif // LL_LIBXUL_ENABLED } -// remove site from list -void LLPanelWeb::onRemTrustedSite ( void* data ) +//static +void LLPanelWeb::callback_clear_browser_cache(S32 option, void* userdata) { - LLPanelWeb* self = (LLPanelWeb*)data; - - self->mTrustedSitesList->deleteSelectedItems (); - - // once we delete something, nothing is selected so disable the REMOVE button - self->mRemTrustedSite->setEnabled ( FALSE ); +#if LL_LIBXUL_ENABLED + if ( option == 0 ) // YES + { + llinfos << "clearing browser cache" << llendl; + LLMozLib::getInstance()->clearCache(); + } +#endif // LL_LIBXUL_ENABLED } -// save off the list of trusted sites -void LLPanelWeb::loadTrustedSiteList () +// static +void LLPanelWeb::onClickClearCookies(void*) { - // can't access white list file when not logged in since - // the filename is based on the SL username - if ( ! mLoggedIn ) - return; - - LLUrlWhiteList* theWhiteList = LLUrlWhiteList::getInstance (); - - if ( theWhiteList->load () ) - { - mTrustedSitesList->clear (); - - LLString each; - if ( theWhiteList->getFirst ( each ) ) - { - mTrustedSitesList->addSimpleItem ( each ); - - while ( theWhiteList->getNext ( each ) ) - { - mTrustedSitesList->addSimpleItem ( each ); - }; - }; - }; +#if LL_LIBXUL_ENABLED + gViewerWindow->alertXml("ConfirmClearCookies", callback_clear_cookies, 0); +#endif // LL_LIBXUL_ENABLED } -// save off the list of trusted sites -void LLPanelWeb::saveTrustedSiteList () +//static +void LLPanelWeb::callback_clear_cookies(S32 option, void* userdata) { - // can't access white list file when not logged in since - // the filename is based on the SL username - if ( ! mLoggedIn ) - return; - - // erase the white list before we re-add items to it - LLUrlWhiteList::getInstance ()->clear (); - - // step through each item in the scroll list - std::vector data_list = mTrustedSitesList->getAllData(); - std::vector::iterator data_itor; - for (data_itor = data_list.begin(); data_itor != data_list.end(); ++data_itor) +#if LL_LIBXUL_ENABLED + if ( option == 0 ) // YES { - LLScrollListItem* each = *data_itor; - LLUrlWhiteList::getInstance ()->addItem ( each->getColumn ( 0 )->getText (), false ); + llinfos << "clearing browser cookies" << llendl; + LLMozLib::getInstance()->clearAllCookies(); } - - LLUrlWhiteList::getInstance ()->save (); +#endif // LL_LIBXUL_ENABLED } -// save off the list of trusted sites -void LLPanelWeb::apply() +// static +void LLPanelWeb::onCommitCookies(LLUICtrl* ctrl, void* data) { + LLPanelWeb* self = (LLPanelWeb*)data; + LLCheckBoxCtrl* check = (LLCheckBoxCtrl*)ctrl; - BOOL use_external_browser = mExternalBrowserCheck->get(); - gSavedSettings.setBOOL("UseExternalBrowser", use_external_browser); - - gSavedSettings.setString ( "BrowserHomePage", mBrowserHomePage->getText() ); - - BOOL enabled = mProxyEnabled->get (); - gSavedSettings.setBOOL ( "BrowserProxyEnabled", enabled ); - - gSavedSettings.setString ( "BrowserProxyAddress", mProxyAddress->getText() ); - - S32 port; - std::stringstream codec ( mProxyPort->getText () ); - codec >> port; - gSavedSettings.setS32 ( "BrowserProxyPort", port ); - - S32 socks = mProxySocks45->getSelectedIndex () + 4; - gSavedSettings.setS32 ( "BrowserProxySocks45", socks ); + if (!self || !check) return; - gSavedSettings.setString ( "BrowserProxyExclusions", mProxyExclusions->getText() ); - - BOOL use_web_pages_on_prims = mWebPagesOnPrimsCheck->get(); - gSavedSettings.setBOOL("UseWebPagesOnPrims", use_web_pages_on_prims); - - // save off the list of trusted sites - saveTrustedSiteList (); - - // update the media engine with the proxy information - if ( LLMediaEngine::getInstance() && LLMediaEngine::getInstance()->isAvailable() ) - { - LLMediaEngine::getInstance()->setNetworkProxy ( enabled, - mProxyAddress->getText(), port, socks, - mProxyExclusions->getText() ); - }; -} - -void LLPanelWeb::cancel() -{ +#if LL_LIBXUL_ENABLED + llinfos << "setting cookies enabled to " << check->get() << llendl; + LLMozLib::getInstance()->enableCookies( check->get() ); +#endif // LL_LIBXUL_ENABLED + } -- cgit v1.1