diff --git a/indra/newview/floatermedialists.cpp b/indra/newview/floatermedialists.cpp index 9f5d9e874f..2f75143133 100644 --- a/indra/newview/floatermedialists.cpp +++ b/indra/newview/floatermedialists.cpp @@ -27,207 +27,151 @@ #include "llviewerprecompiledheaders.h" #include "floatermedialists.h" -#include "llviewerparcelmedia.h" -#include "lluictrlfactory.h" +#include "llfloaterreg.h" +#include "llnotificationsutil.h" #include "llscrolllistctrl.h" -#include "lllineeditor.h" - -bool FloaterMediaLists::sIsWhitelist; +#include "llviewerparcelmedia.h" FloaterMediaLists::FloaterMediaLists(const LLSD& key) : LLFloater(key) { } -FloaterMediaLists::~FloaterMediaLists() -{ -} - BOOL FloaterMediaLists::postBuild() { - mWhitelistSLC = getChild("whitelist_list"); - mBlacklistSLC = getChild("blacklist_list"); + mWhitelistSLC = getChild("whitelist"); + mBlacklistSLC = getChild("blacklist"); - childSetAction("add_whitelist", onWhitelistAdd,this); - childSetAction("remove_whitelist", onWhitelistRemove,this); - childSetAction("add_blacklist", onBlacklistAdd,this); - childSetAction("remove_blacklist", onBlacklistRemove,this); - childSetAction("commit_domain", onCommitDomain,this); + childSetAction("add_whitelist", boost::bind(&FloaterMediaLists::onWhitelistAdd, this)); + childSetAction("remove_whitelist", boost::bind(&FloaterMediaLists::onWhitelistRemove, this)); + childSetAction("add_blacklist", boost::bind(&FloaterMediaLists::onBlacklistAdd, this)); + childSetAction("remove_blacklist", boost::bind(&FloaterMediaLists::onBlacklistRemove, this)); if (!mWhitelistSLC || !mBlacklistSLC) { - return true; + return TRUE; } for(S32 i = 0;i<(S32)LLViewerParcelMedia::sMediaFilterList.size();i++) { + LLSD element; + element["columns"][0]["column"] = "list"; + element["columns"][0]["value"] = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString(); if (LLViewerParcelMedia::sMediaFilterList[i]["action"].asString() == "allow") { - LLSD element; - element["columns"][0]["column"] = "whitelist_col"; - element["columns"][0]["value"] = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString(); - element["columns"][0]["font"] = "SANSSERIF"; mWhitelistSLC->addElement(element); - mWhitelistSLC->sortByColumn("whitelist_col",TRUE); + mWhitelistSLC->sortByColumn("list", TRUE); } else if (LLViewerParcelMedia::sMediaFilterList[i]["action"].asString() == "deny") { - LLSD element; - element["columns"][0]["column"] = "blacklist_col"; - element["columns"][0]["value"] = LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString(); - element["columns"][0]["font"] = "SANSSERIF"; mBlacklistSLC->addElement(element); - mBlacklistSLC->sortByColumn("blacklist_col",TRUE); + mBlacklistSLC->sortByColumn("list", TRUE); } } return TRUE; } -void FloaterMediaLists::draw() +void FloaterMediaLists::onWhitelistAdd() { - refresh(); - LLFloater::draw(); + LLSD payload, args; + args["LIST"] = "whitelist"; + payload["whitelist"] = true; + LLNotificationsUtil::add("AddToMediaList", args, payload, &FloaterMediaLists::handleAddDomainCallback); } -void FloaterMediaLists::refresh() +void FloaterMediaLists::onWhitelistRemove() { + LLScrollListItem* selected = mWhitelistSLC->getFirstSelected(); + + if (selected) + { + std::string domain = mWhitelistSLC->getSelectedItemLabel(); + + for(S32 i = 0;i<(S32)LLViewerParcelMedia::sMediaFilterList.size();i++) + { + if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain) + { + LLViewerParcelMedia::sMediaFilterList.erase(i); + LLViewerParcelMedia::saveDomainFilterList(); + //HACK: should really see if the URL being deleted + // is the same as the saved one + LLViewerParcelMedia::sMediaLastURL = ""; + LLViewerParcelMedia::sAudioLastURL = ""; + LLViewerParcelMedia::sMediaReFilter = true; + break; + } + } + mWhitelistSLC->deleteSelectedItems(); + } +} + +void FloaterMediaLists::onBlacklistAdd() +{ + LLSD payload, args; + args["LIST"] = "blacklist"; + payload["whitelist"] = false; + LLNotificationsUtil::add("AddToMediaList", args, payload, &FloaterMediaLists::handleAddDomainCallback); +} + +void FloaterMediaLists::onBlacklistRemove() +{ + LLScrollListItem* selected = mBlacklistSLC->getFirstSelected(); + + if (selected) + { + std::string domain = mBlacklistSLC->getSelectedItemLabel(); + + for(S32 i = 0;i<(S32)LLViewerParcelMedia::sMediaFilterList.size();i++) + { + if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain) + { + LLViewerParcelMedia::sMediaFilterList.erase(i); + LLViewerParcelMedia::saveDomainFilterList(); + //HACK: should really see if the URL being deleted + // is the same as the saved one + LLViewerParcelMedia::sMediaLastURL = ""; + LLViewerParcelMedia::sAudioLastURL = ""; + LLViewerParcelMedia::sMediaReFilter = true; + break; + } + } + + mBlacklistSLC->deleteSelectedItems(); + } } //static -void FloaterMediaLists::onWhitelistAdd( void* data ) +bool FloaterMediaLists::handleAddDomainCallback(const LLSD& notification, const LLSD& response) { - FloaterMediaLists* self = (FloaterMediaLists*)data; - self->getChildView("blacklist_list")->setEnabled(false); - self->getChildView("whitelist_list")->setEnabled(false); - self->getChildView("remove_whitelist")->setEnabled(false); - self->getChildView("add_whitelist")->setEnabled(false); - self->getChildView("remove_blacklist")->setEnabled(false); - self->getChildView("add_blacklist")->setEnabled(false); - self->getChildView("input_domain")->setVisible(true); - self->getChildView("commit_domain")->setVisible(true); - self->getChild("add_text")-> - setValue(self->getString("EnterUrlAllow")); - self->getChildView("add_text")->setVisible(true); - sIsWhitelist = true; -} - -void FloaterMediaLists::onWhitelistRemove( void* data ) -{ - FloaterMediaLists* self = (FloaterMediaLists*)data; - LLScrollListItem* selected = self->mWhitelistSLC->getFirstSelected(); - - if (selected) + S32 option = LLNotificationsUtil::getSelectedOption(notification, response); + if (option == 0) { - std::string domain = self->mWhitelistSLC->getSelectedItemLabel(); - - for(S32 i = 0;i<(S32)LLViewerParcelMedia::sMediaFilterList.size();i++) + const std::string domain = LLViewerParcelMedia::extractDomain(response["url"].asString()); + if (domain.empty()) { - if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain) - { - LLViewerParcelMedia::sMediaFilterList.erase(i); - LLViewerParcelMedia::saveDomainFilterList(); - //HACK: should really see if the URL being deleted - // is the same as the saved one - LLViewerParcelMedia::sMediaLastURL = ""; - LLViewerParcelMedia::sAudioLastURL = ""; - LLViewerParcelMedia::sMediaReFilter = true; - break; - } + LL_INFOS("MediaFilter") << "No domain specified" << LL_ENDL; + return false; } - - self->mWhitelistSLC->deleteSelectedItems(); - } -} - -void FloaterMediaLists::onBlacklistAdd( void* data ) -{ - FloaterMediaLists* self = (FloaterMediaLists*)data; - self->getChildView("blacklist_list")->setEnabled(false); - self->getChildView("whitelist_list")->setEnabled(false); - self->getChildView("remove_whitelist")->setEnabled(false); - self->getChildView("add_whitelist")->setEnabled(false); - self->getChildView("remove_blacklist")->setEnabled(false); - self->getChildView("add_blacklist")->setEnabled(false); - self->getChildView("input_domain")->setVisible(true); - self->getChildView("commit_domain")->setVisible(true); - self->getChild("add_text")-> - setValue(self->getString("EnterUrlDeny")); - self->getChildView("add_text")->setVisible(true); - self->sIsWhitelist = false; -} - -void FloaterMediaLists::onBlacklistRemove( void* data ) -{ - FloaterMediaLists* self = (FloaterMediaLists*)data; - LLScrollListItem* selected = self->mBlacklistSLC->getFirstSelected(); - - if (selected) - { - std::string domain = self->mBlacklistSLC->getSelectedItemLabel(); - - for(S32 i = 0;i<(S32)LLViewerParcelMedia::sMediaFilterList.size();i++) - { - if (LLViewerParcelMedia::sMediaFilterList[i]["domain"].asString() == domain) - { - LLViewerParcelMedia::sMediaFilterList.erase(i); - LLViewerParcelMedia::saveDomainFilterList(); - //HACK: should really see if the URL being deleted - // is the same as the saved one - LLViewerParcelMedia::sMediaLastURL = ""; - LLViewerParcelMedia::sAudioLastURL = ""; - LLViewerParcelMedia::sMediaReFilter = true; - break; - } - } - - self->mBlacklistSLC->deleteSelectedItems(); - } -} - -void FloaterMediaLists::onCommitDomain( void* data ) -{ - FloaterMediaLists* self = (FloaterMediaLists*)data; - std::string domain = - self->getChild("input_domain")->getText(); - domain = LLViewerParcelMedia::extractDomain(domain); - - if (sIsWhitelist) - { + + bool whitelist = notification["payload"]["whitelist"].asBoolean(); LLSD newmedia; newmedia["domain"] = domain; - newmedia["action"] = "allow"; + newmedia["action"] = (whitelist ? "allow" : "deny"); LLViewerParcelMedia::sMediaFilterList.append(newmedia); LLViewerParcelMedia::saveDomainFilterList(); - LLSD element; - element["columns"][0]["column"] = "whitelist_col"; - element["columns"][0]["value"] = domain; - element["columns"][0]["font"] = "SANSSERIF"; - self->mWhitelistSLC->addElement(element); - self->mWhitelistSLC->sortByColumn("whitelist_col",TRUE); + + LLFloater* floater = LLFloaterReg::getInstance("media_lists"); + if (floater) + { + LLScrollListCtrl* list = floater->getChild(whitelist ? "whitelist" : "blacklist"); + LLSD element; + element["columns"][0]["column"] = "list"; + element["columns"][0]["value"] = domain; + + list->addElement(element); + list->sortByColumn("list", TRUE); + } } - else - { - LLSD newmedia; - newmedia["domain"] = domain; - newmedia["action"] = "deny"; - LLViewerParcelMedia::sMediaFilterList.append(newmedia); - LLViewerParcelMedia::saveDomainFilterList(); - LLSD element; - element["columns"][0]["column"] = "blacklist_col"; - element["columns"][0]["value"] = domain; - element["columns"][0]["font"] = "SANSSERIF"; - self->mBlacklistSLC->addElement(element); - self->mBlacklistSLC->sortByColumn("blacklist_col",TRUE); - } - - self->getChildView("blacklist_list")->setEnabled(true); - self->getChildView("whitelist_list")->setEnabled(true); - self->getChildView("remove_whitelist")->setEnabled(true); - self->getChildView("add_whitelist")->setEnabled(true); - self->getChildView("remove_blacklist")->setEnabled(true); - self->getChildView("add_blacklist")->setEnabled(true); - self->getChildView("input_domain")->setVisible(false); - self->getChildView("commit_domain")->setVisible(false); - self->getChildView("add_text")->setVisible(false); + return false; } diff --git a/indra/newview/floatermedialists.h b/indra/newview/floatermedialists.h index d192a8d6bf..15d4d6d888 100644 --- a/indra/newview/floatermedialists.h +++ b/indra/newview/floatermedialists.h @@ -36,21 +36,18 @@ class LLButton; class FloaterMediaLists : public LLFloater { public: - FloaterMediaLists(const LLSD &); + FloaterMediaLists(const LLSD& key); BOOL postBuild(); - virtual ~FloaterMediaLists(); - - virtual void draw(); - void refresh(); - - static void onWhitelistAdd(void*); - static void onWhitelistRemove(void*); - static void onBlacklistAdd(void*); - static void onBlacklistRemove(void*); - static void onCommitDomain(void*); + static bool handleAddDomainCallback(const LLSD& notification, const LLSD& response); private: - static bool sIsWhitelist; + ~FloaterMediaLists() {}; + + void onWhitelistAdd(); + void onWhitelistRemove(); + void onBlacklistAdd(); + void onBlacklistRemove(); + LLScrollListCtrl* mWhitelistSLC; LLScrollListCtrl* mBlacklistSLC; }; diff --git a/indra/newview/llviewerparcelmedia.cpp b/indra/newview/llviewerparcelmedia.cpp index 55d743547d..da773f9274 100755 --- a/indra/newview/llviewerparcelmedia.cpp +++ b/indra/newview/llviewerparcelmedia.cpp @@ -900,8 +900,8 @@ void LLViewerParcelMedia::filterMediaUrl(LLParcel* parcel) else if (domain.length() >= listed_domain.length()) { size_t pos = domain.rfind(listed_domain); - if ((pos != std::string::npos) && - (pos == domain.length()-listed_domain.length())) + if ((pos != std::string::npos) + && (pos == domain.length()-listed_domain.length())) { found = true; } @@ -912,9 +912,9 @@ void LLViewerParcelMedia::filterMediaUrl(LLParcel* parcel) break; } } - if (media_action=="allow") + if (media_action == "allow") { - llinfos << "Media filter: URL allowed by whitelist: "+parcel->getMediaURL() << llendl; + LL_INFOS("MediaFilter") << "Media filter: URL allowed by whitelist: "+parcel->getMediaURL() << LL_ENDL; sCurrentMedia = *parcel; if (parcel->getName() == currentparcel->getName()) { @@ -922,7 +922,7 @@ void LLViewerParcelMedia::filterMediaUrl(LLParcel* parcel) } sMediaLastActionPlay = true; } - else if (media_action=="deny") + else if (media_action == "deny") { LLStringUtil::format_map_t format_args; format_args["[DOMAIN]"] = domain; @@ -1334,16 +1334,16 @@ void LLViewerParcelMedia::filterAudioUrl(std::string media_url) break; } } - if (media_action=="allow") + if (media_action == "allow") { if (gAudiop != NULL) { - llinfos << "Audio filter: URL allowed by whitelist" << llendl; + LL_INFOS("MediaFilter") << "Audio filter: URL allowed by whitelist" << LL_ENDL; LLViewerAudio::getInstance()->startInternetStreamWithAutoFade(media_url); } sAudioLastActionPlay = true; } - else if (media_action=="deny") + else if (media_action == "deny") { LLStringUtil::format_map_t format_args; format_args["[DOMAIN]"] = domain; @@ -1403,7 +1403,7 @@ void callback_audio_alert2(const LLSD ¬ification, const LLSD &response, std:: S32 option = LLNotificationsUtil::getSelectedOption(notification, response); std::string domain = LLViewerParcelMedia::extractDomain(media_url); - if ((option== 0) && allow) // allow now + if ((option == 0) && allow) // allow now { if (gAudiop != NULL) { @@ -1412,7 +1412,7 @@ void callback_audio_alert2(const LLSD ¬ification, const LLSD &response, std:: } LLViewerParcelMedia::sAudioLastActionPlay = true; } - else if ((option==0) && !allow) //deny now + else if ((option == 0) && !allow) //deny now { if (gAudiop != NULL) { @@ -1421,7 +1421,7 @@ void callback_audio_alert2(const LLSD ¬ification, const LLSD &response, std:: } LLViewerParcelMedia::sAudioLastActionPlay = false; } - else if ((option== 1) && allow) // Whitelist domain + else if ((option == 1) && allow) // Whitelist domain { LLSD newmedia; newmedia["domain"] = domain; @@ -1438,7 +1438,7 @@ void callback_audio_alert2(const LLSD ¬ification, const LLSD &response, std:: } LLViewerParcelMedia::sAudioLastActionPlay = true; } - else if ((option== 1) && !allow) //Blacklist domain + else if ((option == 1) && !allow) //Blacklist domain { LLSD newmedia; newmedia["domain"] = domain; @@ -1455,7 +1455,7 @@ void callback_audio_alert2(const LLSD ¬ification, const LLSD &response, std:: } LLViewerParcelMedia::sAudioLastActionPlay = false; } - else if ((option== 2) && allow) // Whitelist URL + else if ((option == 2) && allow) // Whitelist URL { LLSD newmedia; newmedia["domain"] = media_url; @@ -1472,7 +1472,7 @@ void callback_audio_alert2(const LLSD ¬ification, const LLSD &response, std:: } LLViewerParcelMedia::sAudioLastActionPlay = true; } - else if ((option== 2) && !allow) //Blacklist URL + else if ((option == 2) && !allow) //Blacklist URL { LLSD newmedia; newmedia["domain"] = media_url; @@ -1540,7 +1540,7 @@ void callback_audio_alert_single(const LLSD ¬ification, const LLSD &response, S32 option = LLNotificationsUtil::getSelectedOption(notification, response); std::string domain = LLViewerParcelMedia::extractDomain(media_url); - if (option== 0) // allow now + if (option == 0) // allow now { if (gAudiop != NULL) { @@ -1549,7 +1549,7 @@ void callback_audio_alert_single(const LLSD ¬ification, const LLSD &response, } LLViewerParcelMedia::sAudioLastActionPlay = true; } - else if (option==1) //deny now + else if (option == 1) //deny now { if (gAudiop != NULL) { @@ -1558,7 +1558,7 @@ void callback_audio_alert_single(const LLSD ¬ification, const LLSD &response, } LLViewerParcelMedia::sAudioLastActionPlay = false; } - else if (option== 3) // Whitelist domain + else if (option == 3) // Whitelist domain { LLSD newmedia; newmedia["domain"] = domain; @@ -1575,7 +1575,7 @@ void callback_audio_alert_single(const LLSD ¬ification, const LLSD &response, } LLViewerParcelMedia::sAudioLastActionPlay = true; } - else if (option== 4) //Blacklist domain + else if (option == 4) //Blacklist domain { LLSD newmedia; newmedia["domain"] = domain; @@ -1669,7 +1669,7 @@ void LLViewerParcelMedia::filterMOAPUrl(LLMediaDataClientObject *object, LLObjec { if ((media_url == sCurrentMOAP) && (!sMediaReFilter)) { - llinfos << "MOAP URL filter: no active alert, same URL as previous: " + media_url << llendl; + LL_INFOS("MediaFilter") << "MOAP URL filter: no active alert, same URL as previous: " << media_url << LL_ENDL; // The media hasn't changed, so keep playing if we were. if (sMOAPLastActionPlay) { @@ -1679,7 +1679,7 @@ void LLViewerParcelMedia::filterMOAPUrl(LLMediaDataClientObject *object, LLObjec return; } // New MOAP, so flag the queue empty and filter it. - llinfos << "MOAP URL filter: no active alert, filtering new URL: " + media_url << llendl; + LL_INFOS("MediaFilter") << "MOAP URL filter: no active alert, filtering new URL: " << media_url << LL_ENDL; sMOAPQueueEmpty = true; } // If an alert is active, place the media url in the MOAP queue @@ -1690,7 +1690,7 @@ void LLViewerParcelMedia::filterMOAPUrl(LLMediaDataClientObject *object, LLObjec { if (media_url != sQueuedMOAPUrl) { - llinfos << "MOAP URL filter: active alert, replacing existing queue with: " + media_url << llendl; + LL_INFOS("MediaFilter") << "MOAP URL filter: active alert, replacing existing queue with: " << media_url << LL_ENDL; sQueuedMOAPUrl = media_url; sQueuedMOAPObject = object; sQueuedMOAPNavObject = nav_object; @@ -1704,7 +1704,7 @@ void LLViewerParcelMedia::filterMOAPUrl(LLMediaDataClientObject *object, LLObjec { if (media_url != sCurrentMOAP) { - llinfos << "MOAP URL filter: active alert, nothing queued, adding queue with: " + media_url << llendl; + LL_INFOS("MediaFilter") << "MOAP URL filter: active alert, nothing queued, adding queue with: " << media_url << LL_ENDL; sQueuedMOAPUrl = media_url; sQueuedMOAPObject = object; sQueuedMOAPNavObject = nav_object; @@ -1765,13 +1765,13 @@ void LLViewerParcelMedia::filterMOAPUrl(LLMediaDataClientObject *object, LLObjec break; } } - if (media_action=="allow") + if (media_action == "allow") { - llinfos << "MOAP filter: URL allowed by whitelist" << llendl; + LL_INFOS("MediaFilter") << "MOAP filter: URL allowed by whitelist" << LL_ENDL; nav_object->doNavigate(object, texture_index, media_url); sMOAPLastActionPlay = true; } - else if (media_action=="deny") + else if (media_action == "deny") { LLStringUtil::format_map_t format_args; format_args["[DOMAIN]"] = domain; @@ -1829,18 +1829,18 @@ void callback_MOAP_alert2(const LLSD ¬ification, const LLSD &response, LLMedi S32 option = LLNotificationsUtil::getSelectedOption(notification, response); std::string domain = LLViewerParcelMedia::extractDomain(media_url); - if ((option== 0) && allow) // allow now + if ((option == 0) && allow) // allow now { nav_object->doNavigate(object, texture_index, media_url); LLViewerParcelMedia::sCurrentMOAP = media_url; LLViewerParcelMedia::sMOAPLastActionPlay = true; } - else if ((option==0) && !allow) //deny now + else if ((option == 0) && !allow) //deny now { LLViewerParcelMedia::sCurrentMOAP = ""; LLViewerParcelMedia::sMOAPLastActionPlay = false; } - else if ((option== 1) && allow) // Whitelist domain + else if ((option == 1) && allow) // Whitelist domain { LLSD newmedia; newmedia["domain"] = domain; @@ -1854,7 +1854,7 @@ void callback_MOAP_alert2(const LLSD ¬ification, const LLSD &response, LLMedi LLViewerParcelMedia::sCurrentMOAP = media_url; LLViewerParcelMedia::sMOAPLastActionPlay = true; } - else if ((option== 1) && !allow) //Blacklist domain + else if ((option == 1) && !allow) //Blacklist domain { LLSD newmedia; newmedia["domain"] = domain; @@ -1867,7 +1867,7 @@ void callback_MOAP_alert2(const LLSD ¬ification, const LLSD &response, LLMedi LLViewerParcelMedia::sCurrentMOAP = ""; LLViewerParcelMedia::sMOAPLastActionPlay = false; } - else if ((option== 2) && allow) // Whitelist URL + else if ((option == 2) && allow) // Whitelist URL { LLSD newmedia; newmedia["domain"] = media_url; @@ -1881,7 +1881,7 @@ void callback_MOAP_alert2(const LLSD ¬ification, const LLSD &response, LLMedi LLViewerParcelMedia::sCurrentMOAP = media_url; LLViewerParcelMedia::sMOAPLastActionPlay = true; } - else if ((option== 2) && !allow) //Blacklist URL + else if ((option == 2) && !allow) //Blacklist URL { LLSD newmedia; newmedia["domain"] = media_url; diff --git a/indra/newview/skins/default/xui/en/floater_media_lists.xml b/indra/newview/skins/default/xui/en/floater_media_lists.xml index ff520129da..e4dcf59825 100644 --- a/indra/newview/skins/default/xui/en/floater_media_lists.xml +++ b/indra/newview/skins/default/xui/en/floater_media_lists.xml @@ -4,14 +4,12 @@ can_drag_on_left="false" can_minimize="true" can_resize="true" - enabled="true" - height="300" + height="254" name="floatermedialists" title="Media Lists" width="460" min_height="300" - min_width="460" - rect_control="MediaListRect"> + min_width="460"> Enter domain or URL to always allow: @@ -62,8 +60,8 @@ draw_heading="false" mouse_opaque="true" multi_select="false" - name="whitelist_list"> - + name="whitelist"> + - + name="blacklist"> + - - - - - -