diff --git a/.hgpatchinfo/.RLVa.dep b/.hgpatchinfo/.RLVa.dep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/.hgpatchinfo/Appearance-Misc.dep b/.hgpatchinfo/Appearance-Misc.dep deleted file mode 100644 index e4c3d9f5ad..0000000000 --- a/.hgpatchinfo/Appearance-Misc.dep +++ /dev/null @@ -1 +0,0 @@ -4ef383e7a5cdbf1dedd7458a56a9d13ebb7fddf2 \ No newline at end of file diff --git a/.hgpatchinfo/Appearance-Misc.desc b/.hgpatchinfo/Appearance-Misc.desc deleted file mode 100644 index dbc5fa8cae..0000000000 --- a/.hgpatchinfo/Appearance-Misc.desc +++ /dev/null @@ -1,21 +0,0 @@ -[Appearance/Misc] -- fixed : LLAppearanceMgr::filterWearableItems() doesn't properly filter body parts -- fixed : LLWearableList::processGetAssetReply() creates multiple LLWearable instances for the same asset UUID - -> fix for http://jira.secondlife.com/browse/VWR-20608 -- fixed : attachments sometimes detach only to instantly get reattached after logon -- fixed : Add to/Replace Outfit removes newly worn attachments on completion - -> fix for http://jira.secondlife.com/browse/VWR-18512 -- fixed : attachments that attach and then instantly detach don't have their COF link removed -- fixed : multiple LLWearableHoldingPattern instances lead to "COF corruption" -- fixed : get_is_item_worn() shouldn't make the assumption that items in COFs are always worn -- fixed : drag-and-drop wear behaviour of an attachment onto self isn't consistant with the drag-and-drop behaviour of wearables - -> normal-drop : replace wear - -> Ctrl-drop : add wear -- fixed : LLAppearanceMgr::registerAttachment() fails to (re)add a link for worn attachments that aren't linked to in COF at log-on -- fixed : LLViewerObject::getAttachmentItemID() sometimes returns the NULL UUID for the avatar's own attachments -- fixed : LLAppearanceMgr::updateAppearanceFromCOF() doesn't properly filter items collected from folder links - -> create an outfit with a folder link + "Replace Outfit" == wearables that exist in both COF and the linked folder will end up worn multiple times -- changed : enable "Replace Current Outfit" on the base outfit if it's marked dirty -- changed : "RenderUnloadedAvatar" no longer affects the user's own avatar - -> side-effect of the fix above due to the change to LLVOAvatar::isFullyLoaded() -- added : InitialWearablesLoadedSignal signal which is emitted *once* when the initial wearables are loaded diff --git a/.hgpatchinfo/Appearance-MixedViewers.dep b/.hgpatchinfo/Appearance-MixedViewers.dep deleted file mode 100644 index 0056f0bc00..0000000000 --- a/.hgpatchinfo/Appearance-MixedViewers.dep +++ /dev/null @@ -1 +0,0 @@ -23a6fee23f1d6a2432201906d41e80f3471e8700 \ No newline at end of file diff --git a/.hgpatchinfo/Appearance-MixedViewers.desc b/.hgpatchinfo/Appearance-MixedViewers.desc deleted file mode 100644 index 622d025f34..0000000000 --- a/.hgpatchinfo/Appearance-MixedViewers.desc +++ /dev/null @@ -1,5 +0,0 @@ -[Appearance/MixedViewers] -- fixed : "Worn items in Viewer 2 and Viewer 1.x aren't synchronized" [see http://jira.secondlife.com/browse/VWR-17594] - -> current fix compares *only* the wearables in COF with the wearables specified by AgentWearablesUpdate - -> controlled by "VerifyInitialWearables" (defaults to FALSE with SL-3.0) -- fixed : minor memory leak in LLInitialWearablesFetch::processWearablesMessage() diff --git a/.hgpatchinfo/Chat-NearbyChat.dep b/.hgpatchinfo/Chat-NearbyChat.dep deleted file mode 100644 index 822b8009e0..0000000000 --- a/.hgpatchinfo/Chat-NearbyChat.dep +++ /dev/null @@ -1 +0,0 @@ -d370e6c8ece17733128371a4d0eeaff9ebb52c7f \ No newline at end of file diff --git a/.hgpatchinfo/Chat-NearbyChat.desc b/.hgpatchinfo/Chat-NearbyChat.desc deleted file mode 100644 index b0f09310ff..0000000000 --- a/.hgpatchinfo/Chat-NearbyChat.desc +++ /dev/null @@ -1,7 +0,0 @@ -[Chat/NearbyChat] -- added : (user-resizable) multi-line chat bar to the nearby chat floater -- added : "NearbyChatFloaterBarType" setting to control the appearance of the chat bar in the nearby chat floater - -> 0 - legacy, now single line; 1 - single line (default); 2 - multi line (can be toggled at run-time) -- added : Shift+Enter to whisper from the chatbar(s) -- added : "NearbyChatFloaterWindow" setting to optionally embed the nearby chat floater in the tabbed conversations floater -- added : "save_tearoff_state" for floaters to track the torn off state of LLMultiFloater hosted floaters across viewer sessions diff --git a/.hgpatchinfo/Misc-Spellcheck.dep b/.hgpatchinfo/Misc-Spellcheck.dep deleted file mode 100644 index 880131d517..0000000000 --- a/.hgpatchinfo/Misc-Spellcheck.dep +++ /dev/null @@ -1 +0,0 @@ -5697118601ade0f70f851639661ba637174b3024 \ No newline at end of file diff --git a/.hgpatchinfo/RLVa.dep b/.hgpatchinfo/RLVa.dep deleted file mode 100644 index c9364fce94..0000000000 --- a/.hgpatchinfo/RLVa.dep +++ /dev/null @@ -1 +0,0 @@ -a2a692a4b575df65deec805e8eae2a9c84985855 \ No newline at end of file diff --git a/.hgpatchinfo/UI-Base.dep b/.hgpatchinfo/UI-Base.dep deleted file mode 100644 index 03c82ae969..0000000000 --- a/.hgpatchinfo/UI-Base.dep +++ /dev/null @@ -1 +0,0 @@ -ea427b73d98383faebb9d0209b753dc71b846676 \ No newline at end of file diff --git a/.hgpatchinfo/UI-Base.desc b/.hgpatchinfo/UI-Base.desc deleted file mode 100644 index 1678043a31..0000000000 --- a/.hgpatchinfo/UI-Base.desc +++ /dev/null @@ -1,6 +0,0 @@ -[UI/Base] -- added : static registration of an LLPanel derived class with a custom class creator - -> used in the UI-SidepanelOutfits patch branch -- added : registration of an LLFloater derived class with a callback for the XML filename - -> used in the Chat-Misc patch branch - -> used in the Chat-NearbyChat patch branch diff --git a/.hgpatchinfo/Viewer-Build.dep b/.hgpatchinfo/Viewer-Build.dep deleted file mode 100644 index 6ef8d775bf..0000000000 --- a/.hgpatchinfo/Viewer-Build.dep +++ /dev/null @@ -1 +0,0 @@ -43f5dc9c781eb7528a08abd58b2e4fea6ff1838e \ No newline at end of file diff --git a/.hgpatchinfo/Viewer-Build.desc b/.hgpatchinfo/Viewer-Build.desc deleted file mode 100644 index 6a503b7e35..0000000000 --- a/.hgpatchinfo/Viewer-Build.desc +++ /dev/null @@ -1,10 +0,0 @@ -[Viewer/Build] -* Changed compiler options for "Release with Debug" builds -* Changed compiler and linker options for "Release" builds -* Removed LL's changeset tags and added new (consistent) SL-X.Y.Z tags for releases -* Break into the debugger rather than forcing the process into an unrecoverable state for "llerrs" on non-release builds - -> Windows only -* CATZ-234: Updated FMOD Ex library to v4.44.61 (Windows) -* CATZ-232: Updated OpenJPEG library to v1.5.2 (Windows) -* [FIXED] Viewer fails to compile with only the Windows 8 SDK installed -* [FIXED] JpegLib is built with "Whole Program Optimization" and causing slow linker performance diff --git a/.hgpatchinfo/World-Minimap.desc b/.hgpatchinfo/World-Minimap.desc deleted file mode 100644 index 7202dac6c0..0000000000 --- a/.hgpatchinfo/World-Minimap.desc +++ /dev/null @@ -1,21 +0,0 @@ -[World/Minimap] -- added : "MiniMapObjects" setting to control the rendering of objects on the minimap - -> enabled by default -- added : property line overlay on the minimap -- added : "Property Lines" context menu option on the mini-map to toggle showing property lines - -> controls 'MiniMapPropertyLines' setting, defaults to on -- added : (optionally) use world map tile texture for the mini-map region texture -- added : "Terrain Textures" as an option to the mini-map "Show" context menu - -> with "Terrain Textures" and "World Map Textures" as separated options it will hopefully become clearer what the texture option entails -- added : (optionally) show for-sale parcels with a yellow highlight on the mini-map - -> controlled by 'MiniMapForSaleParcels', defaults to off -- added : colour collision parcels a transparent red - -> controlled by 'MiniMapCollisionParcels', defaults to on -- added : user-configurable "MiniMapParcelOverylay" color for the property lines on the mini-map -- added : "Place Profile" menu item to the mini-map context menu -- added : "View Profile" context menu item for singular and context sub-menu for multiple dots on the mini-map -- changed : removed title bar from the mini-map + fixed vertical centering of directions -- changed : moved mini-map zoom options into a "Zoom" sub-menu -- changed : mini-map zoom levels for "Close", "Medium" and "Far" options - -> removed dead code in LLFloaterMap::handleZoom() -- changed : only show the "Stop Tracking" mini-map context menu item if we're actually tracking something diff --git a/autobuild.xml b/autobuild.xml index b2aadc55b3..3504bb0252 100644 --- a/autobuild.xml +++ b/autobuild.xml @@ -3,6 +3,36 @@ installables + dullahan-gcc5 + + copyright + Copyright (c) 2017, Linden Research, Inc. + description + A headless browser SDK that uses the Chromium Embedded Framework (CEF). It is designed to make it easier to write applications that render modern web content directly to a memory buffer, inject synthesized mouse and keyboard events as well as interact with web based features like JavaScript or cookies. + license + MPL + license_file + LICENSES/LICENSE.txt + name + dullahan-gcc5 + platforms + + linux64 + + archive + + hash + cffd8a7f9d8e55ecd50c72cc39b41f3d + url + http://downloads.phoenixviewer.com/dullahan_gcc5-1.1.1080_3.3325.1750.gaabe4c4-linux64-181420123.tar.bz2 + + name + linux64 + + + version + 1.1.1080_3.3325.1750.gaabe4c4 + ndPhysicsStub license @@ -156,9 +186,9 @@ archive hash - 2dd97d8bd012be4cdc58f550395feb7d + ff2e4df5bffe0203dc654b111347e617 url - http://downloads.phoenixviewer.com/SDL-1.2.15-linux-180871815.tar.bz2 + http://downloads.phoenixviewer.com/SDL-1.2.15-linux-181412059.tar.bz2 name linux @@ -168,9 +198,9 @@ archive hash - 608dfd27f7aed9d57cf1f581c995b680 + 64c1dff0e19792acec7fd32556bf4d7b url - http://downloads.phoenixviewer.com/SDL-1.2.15-linux64-180841947.tar.bz2 + http://downloads.phoenixviewer.com/SDL-1.2.15-linux64-181411635.tar.bz2 name linux64 @@ -882,11 +912,11 @@ archive hash - 9f69c9fa0932d54d17c159fc33faea87 + 5946db540ecd6da093d15c7f793359f9 hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-1.10.04-darwin-180681405.tar.bz2 + file:///opt/firestorm/fmodstudio-1.10.05-darwin-181440931.tar.bz2 name darwin @@ -896,11 +926,11 @@ archive hash - a379240b46b13b2b9e858baa79d1a6ab + 32c7ddbc7a5134c849c8c58323dac1cd hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-1.10.04-linux-180891813.tar.bz2 + file:///opt/firestorm/fmodstudio-1.10.05-linux-181440917.tar.bz2 name linux @@ -910,11 +940,11 @@ archive hash - e0b59ec3b5549b9a0f9caf8c7116af4e + eb04055057a549ac778c7f1391963dfe hash_algorithm md5 url - file:///opt/firestorm/fmodstudio-1.10.04-linux64-180891838.tar.bz2 + file:///opt/firestorm/fmodstudio-1.10.05-linux64-181440918.tar.bz2 name linux64 @@ -924,11 +954,11 @@ archive hash - 7cf0785fa38889c9028fe776eda060f6 + 79dca4b585181c18f983cb3adc4f9633 hash_algorithm md5 url - file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.04-windows-180672209.tar.bz2 + file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.05-windows-181432216.tar.bz2 name windows @@ -938,11 +968,11 @@ archive hash - fe0951c7fffbf1cd0154bcdb5bcaa5c9 + 9e2a8fa5e4bdb0a1eba8be3717029c31 hash_algorithm md5 url - file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.04-windows64-180672211.tar.bz2 + file:///c:/cygwin/opt/firestorm/fmodstudio-1.10.05-windows64-181432218.tar.bz2 name windows64 @@ -2828,9 +2858,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 86cb59b79ce0aafe28d4055a17d1f748 + c5404596040e5f6e66a09a6de5edeefa url - http://downloads.phoenixviewer.com/open_libndofdev-0.3.180871824-linux-180871824.tar.bz2 + http://downloads.phoenixviewer.com/open_libndofdev-0.3.181412109-linux-181412109.tar.bz2 name linux @@ -2840,9 +2870,9 @@ Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors archive hash - 4df349abfc942fb8e674244d1bd0a515 + 774e6a85deb149309f1ccf59d2f5c5a4 url - http://downloads.phoenixviewer.com/open_libndofdev-0.3.180841957-linux64-180841957.tar.bz2 + http://downloads.phoenixviewer.com/open_libndofdev-0.3.181411657-linux64-181411657.tar.bz2 name linux64 diff --git a/indra/cmake/CEFPlugin.cmake b/indra/cmake/CEFPlugin.cmake index 8aefbaf2fc..40f9c317a6 100644 --- a/indra/cmake/CEFPlugin.cmake +++ b/indra/cmake/CEFPlugin.cmake @@ -6,7 +6,12 @@ if (USESYSTEMLIBS) set(CEFPLUGIN OFF CACHE BOOL "CEFPLUGIN support for the llplugin/llmedia test apps.") else (USESYSTEMLIBS) + if (LINUX AND ( CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9.4 ) ) + message( "Using dullahan for GCC >= 5 " ) + use_prebuilt_binary(dullahan-gcc5) + else() use_prebuilt_binary(dullahan) + endif() set(CEFPLUGIN ON CACHE BOOL "CEFPLUGIN support for the llplugin/llmedia test apps.") set(CEF_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/cef) diff --git a/indra/newview/fsfloatersearch.cpp b/indra/newview/fsfloatersearch.cpp index c3baa1ecdd..f994899459 100644 --- a/indra/newview/fsfloatersearch.cpp +++ b/indra/newview/fsfloatersearch.cpp @@ -28,48 +28,46 @@ #include "llviewerprecompiledheaders.h" #include "fsfloatersearch.h" + #include "fsavatarsearchmenu.h" +#include "fsdispatchclassifiedclickthrough.h" +#include "fspanelclassified.h" +#include "fspanelprofile.h" #include "fsscrolllistctrl.h" #include "lfsimfeaturehandler.h" #include "llagent.h" +#include "llavataractions.h" #include "llavatarname.h" #include "llavatarnamecache.h" +#include "llavatarpropertiesprocessor.h" #include "llclassifiedflags.h" +#include "llclassifiedinfo.h" +#include "llcombobox.h" #include "lldateutil.h" -#include "llqueryflags.h" #include "lleventflags.h" #include "lleventnotifier.h" +#include "llfloaterreg.h" +#include "llfloaterworldmap.h" +#include "llgroupactions.h" #include "llgroupmgr.h" -#include "llparcel.h" -#include "llclassifiedinfo.h" -#include "llremoteparcelrequest.h" -#include "llavatarpropertiesprocessor.h" -#include "llproductinforequest.h" +#include "llloadingindicator.h" #include "lllogininstance.h" +#include "llnotificationsutil.h" +#include "llpanelclassified.h" +#include "llparcel.h" +#include "llproductinforequest.h" +#include "llqueryflags.h" +#include "llremoteparcelrequest.h" +#include "lltimer.h" +#include "lltrans.h" #include "llviewercontrol.h" #include "llviewergenericmessage.h" #include "llviewernetwork.h" #include "llviewerregion.h" -#include "llnotificationsutil.h" -#include "lltrans.h" #include "message.h" - -#include "llcombobox.h" -#include "llfloaterreg.h" -#include "llloadingindicator.h" -#include "lltimer.h" - -#include "llavataractions.h" -#include "llgroupactions.h" -#include "llfloaterworldmap.h" -#include "fspanelclassified.h" -#include "fspanelprofile.h" -#include "llpanelclassified.h" -#include "fsdispatchclassifiedclickthrough.h" - -#include #include #include +#include static const S32 MIN_SEARCH_STRING_SIZE = 2; static const S32 RESULT_PAGE_SIZE = 100; @@ -87,19 +85,19 @@ public: FSSearchRemoteParcelInfoObserver(FSFloaterSearch* floater) : LLRemoteParcelInfoObserver(), mParent(floater) {} - + ~FSSearchRemoteParcelInfoObserver() { // remove any in-flight observers std::set::iterator it; for (it = mParcelIDs.begin(); it != mParcelIDs.end(); ++it) - { - const LLUUID &id = *it; - LLRemoteParcelInfoProcessor::getInstance()->removeObserver(id, this); - } + { + const LLUUID &id = *it; + LLRemoteParcelInfoProcessor::getInstance()->removeObserver(id, this); + } mParcelIDs.clear(); } - + /*virtual*/ void processParcelInfo(const LLParcelData& parcel_data) { if (mParent) @@ -109,7 +107,7 @@ public: mParcelIDs.erase(parcel_data.parcel_id); LLRemoteParcelInfoProcessor::getInstance()->removeObserver(parcel_data.parcel_id, this); } - + /*virtual*/ void setParcelID(const LLUUID& parcel_id) { if (!parcel_id.isNull()) @@ -119,14 +117,14 @@ public: LLRemoteParcelInfoProcessor::getInstance()->sendParcelInfoRequest(parcel_id); } } - + /*virtual*/ void setErrorStatus(S32 status, const std::string& reason) { LL_ERRS("Search") << "Can't complete remote parcel request. Http Status: " << status << ". Reason : " << reason << LL_ENDL; } private: std::set mParcelIDs; - FSFloaterSearch* mParent; + FSFloaterSearch* mParent; }; ///// Avatar Properties Observer ///// @@ -137,7 +135,7 @@ public: FSSearchAvatarPropertiesObserver(FSFloaterSearch* floater) : LLAvatarPropertiesObserver(), mParent(floater) {} - + ~FSSearchAvatarPropertiesObserver() { // remove any in-flight observers @@ -149,7 +147,7 @@ public: } mAvatarIDs.clear(); } - + void processProperties(void* data, EAvatarProcessorType type) { if (APT_PROPERTIES == type) @@ -164,7 +162,7 @@ public: if (APT_CLASSIFIED_INFO == type) { LLAvatarClassifiedInfo* c_info = static_cast(data); - if(c_info) + if (c_info) { mParent->displayClassifiedDetails(c_info); LLAvatarPropertiesProcessor::getInstance()->removeObserver(c_info->classified_id, this); @@ -181,7 +179,7 @@ public: } private: std::set mAvatarIDs; - FSFloaterSearch* mParent; + FSFloaterSearch* mParent; }; ///// Group Info Observer ///// @@ -201,12 +199,12 @@ public: groupmgr->sendGroupPropertiesRequest(group_id); } } - + ~FSSearchGroupInfoObserver() { LLGroupMgr::getInstance()->removeObserver(this); } - + void changed(LLGroupChange gc) { if (gc == GC_PROPERTIES) @@ -217,8 +215,8 @@ public: } } private: - FSFloaterSearch* mParent; - LLUUID mID; + FSFloaterSearch* mParent; + LLUUID mID; }; ///// Silly Classified Clickthrough Class ///// @@ -272,7 +270,9 @@ void FSFloaterSearch::onOpen(const LLSD& key) void FSFloaterSearch::onClose(bool app_quitting) { if (mTabContainer) + { gSavedSettings.setS32("FSLastSearchTab", mTabContainer->getCurrentPanelIndex()); + } } BOOL FSFloaterSearch::postBuild() @@ -287,15 +287,15 @@ BOOL FSFloaterSearch::postBuild() childSetAction("teleport_btn", boost::bind(&FSFloaterSearch::onBtnTeleport, this)); childSetAction("map_btn", boost::bind(&FSFloaterSearch::onBtnMap, this)); resetVerbs(); - - mPanelPeople = findChild("panel_ls_people"); - mPanelGroups = findChild("panel_ls_groups"); - mPanelPlaces = findChild("panel_ls_places"); - mPanelEvents = findChild("panel_ls_events"); - mPanelLand = findChild("panel_ls_land"); + + mPanelPeople = findChild("panel_ls_people"); + mPanelGroups = findChild("panel_ls_groups"); + mPanelPlaces = findChild("panel_ls_places"); + mPanelEvents = findChild("panel_ls_events"); + mPanelLand = findChild("panel_ls_land"); mPanelClassifieds = findChild("panel_ls_classifieds"); - mPanelWeb = findChild("panel_ls_web"); - + mPanelWeb = findChild("panel_ls_web"); + // If skin has legacy full profile view, use it mPanelProfile = mPanelPeople->findChild("panel_profile_view"); if (mPanelProfile) @@ -304,7 +304,7 @@ BOOL FSFloaterSearch::postBuild() mPanelProfile->setEmbedded(true); mPanelPeople->childSetAction("people_profile_btn", boost::bind(&FSFloaterSearch::onBtnPeopleProfile, this)); } - + mDetailsPanel = getChild("panel_ls_details"); mDetailTitle = getChild("title"); mDetailDesc = getChild("desc"); @@ -326,19 +326,19 @@ BOOL FSFloaterSearch::postBuild() mDetailsPanel->setVisible(false); } mHasSelection = false; - + if (!mTabContainer->selectTab(gSavedSettings.getS32("FSLastSearchTab"))) { mTabContainer->selectFirstTab(); } - + return TRUE; } void FSFloaterSearch::onTabChange() { LLPanel* active_panel = mTabContainer->getCurrentPanel(); - + if (active_panel == mPanelWeb) { mDetailsPanel->setVisible(false); @@ -354,7 +354,7 @@ void FSFloaterSearch::onTabChange() LLPanel* FSFloaterSearch::getSearchPanel(std::string panel_name) { FSFloaterSearch* search_instance = LLFloaterReg::getTypedInstance("search"); - if(search_instance && search_instance->mTabContainer) + if (search_instance && search_instance->mTabContainer) { return search_instance->mTabContainer->getPanelByName(panel_name); } @@ -374,19 +374,19 @@ void FSFloaterSearch::onSelectedItem(const LLUUID& selected_item, ESearchCategor switch (type) { case SC_AVATAR: - { - // If skin has legacy full profile view, use it - if (mPanelProfile) { - mPanelProfile->setVisible(true); - mPanelProfile->onOpen(selected_item); + // If skin has legacy full profile view, use it + if (mPanelProfile) + { + mPanelProfile->setVisible(true); + mPanelProfile->onOpen(selected_item); + } + else + { + LLAvatarPropertiesProcessor::getInstance()->addObserver(selected_item, mAvatarPropertiesObserver); + LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(selected_item); + } } - else - { - LLAvatarPropertiesProcessor::getInstance()->addObserver(selected_item, mAvatarPropertiesObserver); - LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(selected_item); - } - } break; case SC_GROUP: mGroupPropertiesRequest = new FSSearchGroupInfoObserver(selected_item, this); @@ -408,11 +408,11 @@ void FSFloaterSearch::onSelectedEvent(const S32 selected_event) { resetVerbs(); flushDetails(); - + gMessageSystem->newMessageFast(_PREHASH_EventInfoRequest); gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgentID); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); gMessageSystem->nextBlockFast(_PREHASH_EventData); gMessageSystem->addU32Fast(_PREHASH_EventID, selected_event); gAgent.sendReliableMessage(); @@ -429,18 +429,23 @@ void FSFloaterSearch::displayParcelDetails(const LLParcelData& parcel_data) // HACK: Flag 0x2 == adult region, // Flag 0x1 == mature region, otherwise assume PG if (parcel_data.flags & 0x2) + { mDetailMaturity->setValue("Parcel_R_Dark"); + } else if (parcel_data.flags & 0x1) + { mDetailMaturity->setValue("Parcel_M_Dark"); + } else + { mDetailMaturity->setValue("Parcel_PG_Dark"); - + } + LLStringUtil::format_map_t map; map["DWELL"] = llformat("%.0f", (F64)parcel_data.dwell); map["AREA"] = llformat("%d m²", parcel_data.actual_area); - map["LOCATION"] = llformat("%s (%d, %d, %d)", - parcel_data.sim_name.c_str(), region_x, region_y, region_z); - + map["LOCATION"] = llformat("%s (%d, %d, %d)", parcel_data.sim_name.c_str(), region_x, region_y, region_z); + mParcelGlobal = LLVector3d(parcel_data.global_x, parcel_data.global_y, parcel_data.global_z); mDetailsPanel->setVisible(true); mHasSelection = true; @@ -467,15 +472,14 @@ void FSFloaterSearch::displayAvatarDetails(LLAvatarData*& avatar_data) map["PARTNER"] = LLSLURL("agent", avatar_data->partner_id, "inspect").getSLURLString(); mDetailAux2->setValue(getString("string.partner", map)); } - + mDetailsPanel->setVisible(true); mHasSelection = true; mDetailTitle->setValue(LLTrans::getString("LoadingData")); mDetailDesc->setValue(avatar_data->about_text); mDetailSnapshot->setValue(avatar_data->image_id); mDetailAux1->setValue(getString("string.age", map)); - LLAvatarNameCache::get(avatar_data->avatar_id, - boost::bind(&FSFloaterSearch::avatarNameUpdatedCallback,this, _1, _2)); + LLAvatarNameCache::get(avatar_data->avatar_id, boost::bind(&FSFloaterSearch::avatarNameUpdatedCallback,this, _1, _2)); childSetVisible("people_profile_btn", true); childSetVisible("people_message_btn", true); childSetVisible("people_friend_btn", true); @@ -486,11 +490,11 @@ void FSFloaterSearch::displayAvatarDetails(LLAvatarData*& avatar_data) void FSFloaterSearch::displayGroupDetails(LLGroupMgrGroupData*& group_data) { if (group_data) - { + { LLStringUtil::format_map_t map; map["MEMBER_COUNT"] = llformat("%d",group_data->mMemberCount); map["FOUNDER"] = LLSLURL("agent", group_data->mFounderID, "inspect").getSLURLString(); - + mDetailsPanel->setVisible(true); mHasSelection = true; mDetailTitle->setValue(LLTrans::getString("LoadingData")); @@ -506,8 +510,7 @@ void FSFloaterSearch::displayGroupDetails(LLGroupMgrGroupData*& group_data) childSetVisible("group_join_btn", true); getChildView("group_join_btn")->setEnabled(join_btn_enabled); getChildView("group_message_btn")->setEnabled(is_member); - gCacheName->getGroup(getSelectedID(), - boost::bind(&FSFloaterSearch::groupNameUpdatedCallback, this, _1, _2, _3)); + gCacheName->getGroup(getSelectedID(), boost::bind(&FSFloaterSearch::groupNameUpdatedCallback, this, _1, _2, _3)); } } @@ -516,13 +519,18 @@ void FSFloaterSearch::displayClassifiedDetails(LLAvatarClassifiedInfo*& c_info) if (c_info) { if (c_info->flags & CLASSIFIED_FLAG_MATURE) + { mDetailMaturity->setValue("Parcel_M_Dark"); + } else + { mDetailMaturity->setValue("Parcel_PG_Dark"); + } + LLStringUtil::format_map_t map; map["LISTING_PRICE"] = llformat("L$%d", c_info->price_for_listing); map["SLURL"] = LLSLURL("parcel", c_info->parcel_id, "about").getSLURLString(); - + mDetailsPanel->setVisible(true); mHasSelection = true; mDetailMaturity->setVisible(true); @@ -541,11 +549,18 @@ void FSFloaterSearch::displayClassifiedDetails(LLAvatarClassifiedInfo*& c_info) void FSFloaterSearch::displayEventDetails(U32 eventId, F64 eventEpoch, const std::string& eventDateStr, const std::string &eventName, const std::string &eventDesc, const std::string &simName, U32 eventDuration, U32 eventFlags, U32 eventCover, LLVector3d eventGlobalPos) { if (eventFlags == EVENT_FLAG_ADULT) + { mDetailMaturity->setValue("Parcel_R_Dark"); + } else if (eventFlags == EVENT_FLAG_MATURE) + { mDetailMaturity->setValue("Parcel_M_Dark"); + } else + { mDetailMaturity->setValue("Parcel_PG_Dark"); + } + S32 region_x; S32 region_y; S32 region_z; @@ -560,7 +575,7 @@ void FSFloaterSearch::displayEventDetails(U32 eventId, F64 eventEpoch, const std map["COVERCHARGE"] = llformat("L$%d", eventCover); mDetailAux2->setValue(getString("string.covercharge", map)); } - + mParcelGlobal = eventGlobalPos; mEventID = eventId; mDetailsPanel->setVisible(true); @@ -599,13 +614,17 @@ void FSFloaterSearch::groupNameUpdatedCallback(const LLUUID& id, const std::stri void FSFloaterSearch::setLoadingProgress(bool started) { LLLoadingIndicator* indicator = getChild("loading"); - - indicator->setVisible(started); - - if (started) - indicator->start(); - else - indicator->stop(); + + indicator->setVisible(started); + + if (started) + { + indicator->start(); + } + else + { + indicator->stop(); + } } void FSFloaterSearch::resetVerbs() @@ -673,10 +692,13 @@ void FSFloaterSearch::onBtnTeleport() /// the user may elect to minimize the floater (2), or to do nothing (any other setting) static LLCachedControl teleport_action(gSavedSettings, "FSLegacySearchActionOnTeleport"); if (teleport_action == 1) + { closeFloater(); + } else if (teleport_action == 2) + { setMinimized(TRUE); - + } } } @@ -728,12 +750,12 @@ BOOL FSPanelSearchPeople::postBuild() mSearchResults->setCommentText(LLTrans::getString("no_results")); mSearchResults->setContextMenu(&gFSAvatarSearchMenu); } - + childSetAction("people_next", boost::bind(&FSPanelSearchPeople::onBtnNext, this)); childSetAction("people_back", boost::bind(&FSPanelSearchPeople::onBtnBack, this)); getChildView("people_next")->setEnabled(FALSE); getChildView("people_back")->setEnabled(FALSE); - + return TRUE; } @@ -751,19 +773,25 @@ void FSPanelSearchPeople::find() mSearchResults->setCommentText(LLTrans::getString("search_short")); return; } - + + LLStringUtil::replaceChar(text, '.', ' '); + mResultsReceived = 0; if (mQueryID.notNull()) + { mQueryID.setNull(); + } mQueryID.generate(); if (mStartSearch < 0) + { mStartSearch = 0; - + } + gMessageSystem->newMessage("DirFindQuery"); gMessageSystem->nextBlock("AgentData"); - gMessageSystem->addUUID("AgentID", gAgent.getID()); - gMessageSystem->addUUID("SessionID", gAgent.getSessionID()); + gMessageSystem->addUUID("AgentID", gAgentID); + gMessageSystem->addUUID("SessionID", gAgentSessionID); gMessageSystem->nextBlock("QueryData"); gMessageSystem->addUUID("QueryID", getQueryID()); gMessageSystem->addString("QueryText", text); @@ -771,7 +799,7 @@ void FSPanelSearchPeople::find() gMessageSystem->addS32("QueryStart", mStartSearch); gAgent.sendReliableMessage(); LL_DEBUGS("Search") << "Firing off search request: " << getQueryID() << LL_ENDL; - + mSearchResults->deleteAllItems(); mSearchResults->setCommentText(LLTrans::getString("searching")); mNumResultsReturned = 0; @@ -780,11 +808,11 @@ void FSPanelSearchPeople::find() void FSPanelSearchPeople::onBtnFind() { std::string text = mSearchComboBox->getSimple(); - if(!text.empty()) + if (!text.empty()) { LLSearchHistory::getInstance()->addEntry(text); } - + resetSearch(); find(); @@ -794,7 +822,7 @@ void FSPanelSearchPeople::onBtnNext() { mStartSearch += RESULT_PAGE_SIZE; getChildView("people_back")->setEnabled(TRUE); - + find(); } @@ -802,7 +830,7 @@ void FSPanelSearchPeople::onBtnBack() { mStartSearch -= RESULT_PAGE_SIZE; getChildView("people_back")->setEnabled(mStartSearch > 0); - + find(); } @@ -839,32 +867,35 @@ void FSPanelSearchPeople::onSelectItem() void FSPanelSearchPeople::processSearchReply(LLMessageSystem* msg, void**) { LLUUID query_id; - std::string first_name; - std::string last_name; + std::string first_name; + std::string last_name; LLUUID agent_id; - + msg->getUUIDFast(_PREHASH_QueryData, _PREHASH_QueryID, query_id); msg->getUUIDFast(_PREHASH_AgentData, _PREHASH_AgentID, agent_id); - + // This result is not for us. - if (agent_id != gAgent.getID()) return; + if (agent_id != gAgentID) + { + return; + } LL_DEBUGS("Search") << "received search results - QueryID: " << query_id << " AgentID: " << agent_id << LL_ENDL; - + FSPanelSearchPeople* self = (FSPanelSearchPeople*)FSFloaterSearch::getSearchPanel("panel_ls_people"); - + // floater is closed or these are not results from our last request if (NULL == self || query_id != self->getQueryID()) { return; } - + LLScrollListCtrl* search_results = self->getChild("search_results_people"); - + if (self->mNumResultsReturned++ == 0) { search_results->deleteAllItems(); } - + // Check for status messages if (msg->getNumberOfBlocks("StatusData")) { @@ -897,8 +928,8 @@ void FSPanelSearchPeople::processSearchReply(LLMessageSystem* msg, void**) return; } } - - BOOL found_one = FALSE; + + bool found_one = false; S32 num_new_rows = msg->getNumberOfBlocksFast(_PREHASH_QueryReplies); if (num_new_rows == 0 && self->mResultsReceived == 0) { @@ -907,10 +938,10 @@ void FSPanelSearchPeople::processSearchReply(LLMessageSystem* msg, void**) search_results->setEnabled(FALSE); search_results->setCommentText(LLTrans::getString("not_found", map)); } - + self->mResultsReceived += num_new_rows; num_new_rows = self->showNextButton(num_new_rows); - + for (S32 i = 0; i < num_new_rows; i++) { msg->getStringFast( _PREHASH_QueryReplies, _PREHASH_FirstName, first_name, i); @@ -930,25 +961,25 @@ void FSPanelSearchPeople::processSearchReply(LLMessageSystem* msg, void**) { LL_DEBUGS("Search") << "Got: " << first_name << " " << last_name << " AgentID: " << agent_id << LL_ENDL; search_results->setEnabled(TRUE); - found_one = TRUE; + found_one = true; std::string avatar_name; avatar_name = LLCacheName::buildFullName(first_name, last_name); - + LLSD content; LLSD element; - + element["id"] = agent_id; - + element["columns"][0]["column"] = "icon"; element["columns"][0]["type"] = "icon"; element["columns"][0]["value"] = "icon_avatar_offline.tga"; - + element["columns"][1]["column"] = "username"; element["columns"][1]["value"] = avatar_name; - + content["name"] = avatar_name; - + search_results->addElement(element, ADD_BOTTOM); self->mResultsContent[agent_id.asString()] = content; } @@ -994,12 +1025,12 @@ BOOL FSPanelSearchGroups::postBuild() mSearchResults->setEnabled(FALSE); mSearchResults->setCommentText(LLTrans::getString("no_results")); } - + childSetAction("groups_next", boost::bind(&FSPanelSearchGroups::onBtnNext, this)); childSetAction("groups_back", boost::bind(&FSPanelSearchGroups::onBtnBack, this)); getChildView("groups_next")->setEnabled(FALSE); getChildView("groups_back")->setEnabled(FALSE); - + return TRUE; } @@ -1009,14 +1040,14 @@ void FSPanelSearchGroups::focusDefaultElement() } void FSPanelSearchGroups::find() -{ +{ std::string text = filterShortWords(mSearchComboBox->getSimple()); if (text.size() == 0) { mSearchResults->setCommentText(LLTrans::getString("search_short")); return; } - + static LLUICachedControl inc_pg("ShowPGSims", 1); static LLUICachedControl inc_mature("ShowMatureSims", 0); static LLUICachedControl inc_adult("ShowAdultSims", 0); @@ -1027,29 +1058,41 @@ void FSPanelSearchGroups::find() } U32 scope = 0; if (gAgent.wantsPGOnly()) + { scope |= DFQ_PG_SIMS_ONLY; + } bool adult_enabled = gAgent.canAccessAdult(); bool mature_enabled = gAgent.canAccessMature(); if (inc_pg) + { scope |= DFQ_INC_PG; + } if (inc_mature && mature_enabled) + { scope |= DFQ_INC_MATURE; + } if (inc_adult && adult_enabled) + { scope |= DFQ_INC_ADULT; + } scope |= DFQ_GROUPS; - + mResultsReceived = 0; if (mQueryID.notNull()) + { mQueryID.setNull(); + } mQueryID.generate(); - + if (mStartSearch < 0) + { mStartSearch = 0; - + } + gMessageSystem->newMessage("DirFindQuery"); gMessageSystem->nextBlock("AgentData"); - gMessageSystem->addUUID("AgentID", gAgent.getID()); - gMessageSystem->addUUID("SessionID", gAgent.getSessionID()); + gMessageSystem->addUUID("AgentID", gAgentID); + gMessageSystem->addUUID("SessionID", gAgentSessionID); gMessageSystem->nextBlock("QueryData"); gMessageSystem->addUUID("QueryID", getQueryID()); gMessageSystem->addString("QueryText", text); @@ -1057,7 +1100,7 @@ void FSPanelSearchGroups::find() gMessageSystem->addS32("QueryStart", mStartSearch); gAgent.sendReliableMessage(); LL_DEBUGS("Search") << "Firing off search request: " << getQueryID() << LL_ENDL; - + mSearchResults->deleteAllItems(); mSearchResults->setCommentText(LLTrans::getString("searching")); mNumResultsReturned = 0; @@ -1070,7 +1113,7 @@ void FSPanelSearchGroups::onBtnFind() { LLSearchHistory::getInstance()->addEntry(text); } - + resetSearch(); find(); @@ -1080,7 +1123,7 @@ void FSPanelSearchGroups::onBtnNext() { mStartSearch += RESULT_PAGE_SIZE; getChildView("groups_back")->setEnabled(TRUE); - + find(); } @@ -1088,7 +1131,7 @@ void FSPanelSearchGroups::onBtnBack() { mStartSearch -= RESULT_PAGE_SIZE; getChildView("groups_back")->setEnabled(mStartSearch > 0); - + find(); } @@ -1118,7 +1161,9 @@ void FSPanelSearchGroups::onSelectItem() } FSFloaterSearch* search_instance = LLFloaterReg::getTypedInstance("search"); if (search_instance) + { search_instance->FSFloaterSearch::onSelectedItem(mSearchResults->getSelectedValue(), FSFloaterSearch::SC_GROUP); + } } // static @@ -1130,30 +1175,33 @@ void FSPanelSearchGroups::processSearchReply(LLMessageSystem* msg, void**) std::string group_name; S32 members; F32 search_order; - + msg->getUUIDFast( _PREHASH_QueryData, _PREHASH_QueryID, query_id); msg->getUUIDFast( _PREHASH_AgentData, _PREHASH_AgentID, agent_id); - + // Not for us - if (agent_id != gAgent.getID()) return; + if (agent_id != gAgentID) + { + return; + } LL_DEBUGS("Search") << "received directory request - QueryID: " << query_id << " AgentID: " << agent_id << LL_ENDL; - + FSPanelSearchGroups* self = (FSPanelSearchGroups*)FSFloaterSearch::getSearchPanel("panel_ls_groups"); - + // floater is closed or these are not results from our last request if (NULL == self || query_id != self->mQueryID) { return; } - + LLScrollListCtrl* search_results = self->getChild("search_results_groups"); - + // Clear "Searching" label on first results if (self->mNumResultsReturned++ == 0) { search_results->deleteAllItems(); } - + // Check for status messages if (msg->getNumberOfBlocks("StatusData")) { @@ -1186,8 +1234,8 @@ void FSPanelSearchGroups::processSearchReply(LLMessageSystem* msg, void**) return; } } - - BOOL found_one = FALSE; + + bool found_one = false; S32 num_new_rows = msg->getNumberOfBlocksFast(_PREHASH_QueryReplies); if (num_new_rows == 0 && self->mResultsReceived == 0) { @@ -1196,10 +1244,10 @@ void FSPanelSearchGroups::processSearchReply(LLMessageSystem* msg, void**) search_results->setEnabled(FALSE); search_results->setCommentText(LLTrans::getString("not_found", map)); } - + self->mResultsReceived += num_new_rows; num_new_rows = self->showNextButton(num_new_rows); - + for (S32 i = 0; i < num_new_rows; i++) { msg->getUUIDFast( _PREHASH_QueryReplies, _PREHASH_GroupID, group_id, i); @@ -1218,28 +1266,28 @@ void FSPanelSearchGroups::processSearchReply(LLMessageSystem* msg, void**) { LL_DEBUGS("Search") << "Got: " << group_name << " GroupID: " << group_id << LL_ENDL; search_results->setEnabled(TRUE); - found_one = TRUE; - + found_one = true; + LLSD content; LLSD element; - + element["id"] = group_id; - + element["columns"][0]["column"] = "icon"; element["columns"][0]["type"] = "icon"; element["columns"][0]["value"] = "Icon_Group"; - + element["columns"][1]["column"] = "group_name"; element["columns"][1]["value"] = group_name; - + element["columns"][2]["column"] = "members"; element["columns"][2]["value"] = members; - + element["columns"][3]["column"] = "score"; element["columns"][3]["value"] = search_order; - + content["name"] = group_name; - + search_results->addElement(element, ADD_BOTTOM); self->mResultsContent[group_id.asString()] = content; } @@ -1301,7 +1349,7 @@ BOOL FSPanelSearchPlaces::postBuild() childSetAction("places_back", boost::bind(&FSPanelSearchPlaces::onBtnBack, this)); getChildView("places_next")->setEnabled(FALSE); getChildView("places_back")->setEnabled(FALSE); - + return TRUE; } @@ -1311,14 +1359,14 @@ void FSPanelSearchPlaces::focusDefaultElement() } void FSPanelSearchPlaces::find() -{ +{ std::string text = filterShortWords(mSearchComboBox->getSimple()); if (text.size() == 0) { mSearchResults->setCommentText(LLTrans::getString("search_short")); return; } - + static LLUICachedControl inc_pg("ShowPGSims", 1); static LLUICachedControl inc_mature("ShowMatureSims", 0); static LLUICachedControl inc_adult("ShowAdultSims", 0); @@ -1339,29 +1387,41 @@ void FSPanelSearchPlaces::find() } U32 scope = 0; if (gAgent.wantsPGOnly()) + { scope |= DFQ_PG_SIMS_ONLY; + } bool adult_enabled = gAgent.canAccessAdult(); bool mature_enabled = gAgent.canAccessMature(); if (inc_pg) + { scope |= DFQ_INC_PG; + } if (inc_mature && mature_enabled) + { scope |= DFQ_INC_MATURE; + } if (inc_adult && adult_enabled) + { scope |= DFQ_INC_ADULT; + } scope |= DFQ_DWELL_SORT; - + mResultsReceived = 0; if (mQueryID.notNull()) + { mQueryID.setNull(); + } mQueryID.generate(); - + if (mStartSearch < 0) + { mStartSearch = 0; - + } + gMessageSystem->newMessage("DirPlacesQuery"); gMessageSystem->nextBlock("AgentData"); - gMessageSystem->addUUID("AgentID", gAgent.getID()); - gMessageSystem->addUUID("SessionID", gAgent.getSessionID()); + gMessageSystem->addUUID("AgentID", gAgentID); + gMessageSystem->addUUID("SessionID", gAgentSessionID); gMessageSystem->nextBlock("QueryData"); gMessageSystem->addUUID("QueryID", getQueryID()); gMessageSystem->addString("QueryText", text); @@ -1372,7 +1432,7 @@ void FSPanelSearchPlaces::find() gMessageSystem->addS32("QueryStart", mStartSearch); gAgent.sendReliableMessage(); LL_DEBUGS("Search") << "Firing off places search request: " << getQueryID() << LL_ENDL; - + mSearchResults->deleteAllItems(); mSearchResults->setCommentText(LLTrans::getString("searching")); mNumResultsReturned = 0; @@ -1381,13 +1441,13 @@ void FSPanelSearchPlaces::find() void FSPanelSearchPlaces::onBtnFind() { std::string text = mSearchComboBox->getSimple(); - if(!text.empty()) + if (!text.empty()) { LLSearchHistory::getInstance()->addEntry(text); } - + resetSearch(); - + find(); } @@ -1395,7 +1455,7 @@ void FSPanelSearchPlaces::onBtnNext() { mStartSearch += RESULT_PAGE_SIZE; getChildView("places_back")->setEnabled(TRUE); - + find(); } @@ -1403,7 +1463,7 @@ void FSPanelSearchPlaces::onBtnBack() { mStartSearch -= RESULT_PAGE_SIZE; getChildView("places_back")->setEnabled(mStartSearch > 0); - + find(); } @@ -1433,43 +1493,48 @@ void FSPanelSearchPlaces::onSelectItem() } FSFloaterSearch* search_instance = LLFloaterReg::getTypedInstance("search"); if (search_instance) + { search_instance->FSFloaterSearch::onSelectedItem(mSearchResults->getSelectedValue(), FSFloaterSearch::SC_PLACE); + } } // static void FSPanelSearchPlaces::processSearchReply(LLMessageSystem* msg, void**) { - LLUUID agent_id; - LLUUID query_id; - LLUUID parcel_id; + LLUUID agent_id; + LLUUID query_id; + LLUUID parcel_id; std::string name; - BOOL for_sale; - BOOL auction; - F32 dwell; - + BOOL for_sale; + BOOL auction; + F32 dwell; + msg->getUUID("AgentData", "AgentID", agent_id); msg->getUUID("QueryData", "QueryID", query_id); - + // Not for us - if (agent_id != gAgent.getID()) return; + if (agent_id != gAgentID) + { + return; + } LL_DEBUGS("Search") << "received directory request - QueryID: " << query_id << " AgentID: " << agent_id << LL_ENDL; - + FSPanelSearchPlaces* self = (FSPanelSearchPlaces*)FSFloaterSearch::getSearchPanel("panel_ls_places"); - + // floater is closed or these are not results from our last request if (NULL == self || query_id != self->getQueryID()) { return; } - + LLScrollListCtrl* search_results = self->getChild("search_results_places"); - + // Clear "Searching" label on first results if (self->mNumResultsReturned++ == 0) { search_results->deleteAllItems(); } - + // Check for status messages if (msg->getNumberOfBlocks("StatusData")) { @@ -1508,8 +1573,8 @@ void FSPanelSearchPlaces::processSearchReply(LLMessageSystem* msg, void**) return; } } - - BOOL found_one = FALSE; + + bool found_one = false; S32 num_new_rows = msg->getNumberOfBlocks("QueryReplies"); if (num_new_rows == 0 && self->mResultsReceived == 0) { @@ -1518,10 +1583,10 @@ void FSPanelSearchPlaces::processSearchReply(LLMessageSystem* msg, void**) search_results->setEnabled(FALSE); search_results->setCommentText(LLTrans::getString("not_found", map)); } - + self->mResultsReceived += num_new_rows; num_new_rows = self->showNextButton(num_new_rows); - + for (S32 i = 0; i < num_new_rows; i++) { msg->getUUID( "QueryReplies", "ParcelID", parcel_id, i); @@ -1541,13 +1606,13 @@ void FSPanelSearchPlaces::processSearchReply(LLMessageSystem* msg, void**) { LL_DEBUGS("Search") << "Got: " << name << " ParcelID: " << parcel_id << LL_ENDL; search_results->setEnabled(TRUE); - found_one = TRUE; - + found_one = true; + LLSD content; LLSD element; - + element["id"] = parcel_id; - + if (auction) { element["columns"][0]["column"] = "icon"; @@ -1566,16 +1631,16 @@ void FSPanelSearchPlaces::processSearchReply(LLMessageSystem* msg, void**) element["columns"][0]["type"] = "icon"; element["columns"][0]["value"] = "Icon_Place"; } - + element["columns"][1]["column"] = "place_name"; element["columns"][1]["value"] = name; - + content["name"] = name; - + std::string buffer = llformat("%.0f", (F64)dwell); element["columns"][2]["column"] = "dwell"; element["columns"][2]["value"] = buffer; - + search_results->addElement(element, ADD_BOTTOM); self->mResultsContent[parcel_id.asString()] = content; } @@ -1650,67 +1715,99 @@ void FSPanelSearchLand::find() LLNotificationsUtil::add("NoContentToSearch"); return; } - + U32 category = ST_ALL; const std::string& selection = findChild("land_category")->getSelectedValue().asString(); if (!selection.empty()) { if (selection == "Auction") + { category = ST_AUCTION; + } else if (selection == "Mainland") + { category = ST_MAINLAND; + } else if (selection == "Estate") + { category = ST_ESTATE; + } } - + U32 scope = 0; if (gAgent.wantsPGOnly()) + { scope |= DFQ_PG_SIMS_ONLY; + } bool mature_enabled = gAgent.canAccessMature(); bool adult_enabled = gAgent.canAccessAdult(); if (inc_pg) + { scope |= DFQ_INC_PG; + } if (inc_mature && mature_enabled) + { scope |= DFQ_INC_MATURE; + } if (inc_adult && adult_enabled) + { scope |= DFQ_INC_ADULT; + } const std::string& sort = findChild("land_sort_combo")->getSelectedValue().asString(); if (!sort.empty()) { if (sort == "Name") + { scope |= DFQ_NAME_SORT; + } else if (sort == "Price") + { scope |= DFQ_PRICE_SORT; + } else if (sort == "PPM") + { scope |= DFQ_PER_METER_SORT; + } else if (sort == "Area") + { scope |= DFQ_AREA_SORT; + } } else { scope |= DFQ_PRICE_SORT; } if (childGetValue("ascending_check").asBoolean()) + { scope |= DFQ_SORT_ASC; + } if (limit_price) + { scope |= DFQ_LIMIT_BY_PRICE; + } if (limit_area) + { scope |= DFQ_LIMIT_BY_AREA; + } S32 price = childGetValue("edit_price").asInteger(); S32 area = childGetValue("edit_area").asInteger(); - + mResultsReceived = 0; if (mQueryID.notNull()) + { mQueryID.setNull(); + } mQueryID.generate(); - + if (mStartSearch < 0) + { mStartSearch = 0; - + } + gMessageSystem->newMessage("DirLandQuery"); gMessageSystem->nextBlock("AgentData"); - gMessageSystem->addUUID("AgentID", gAgent.getID()); - gMessageSystem->addUUID("SessionID", gAgent.getSessionID()); + gMessageSystem->addUUID("AgentID", gAgentID); + gMessageSystem->addUUID("SessionID", gAgentSessionID); gMessageSystem->nextBlock("QueryData"); gMessageSystem->addUUID("QueryID", getQueryID()); gMessageSystem->addU32("QueryFlags", scope); @@ -1720,7 +1817,7 @@ void FSPanelSearchLand::find() gMessageSystem->addS32("QueryStart", mStartSearch); gAgent.sendReliableMessage(); LL_DEBUGS("Search") << "Firing off places search request: " << getQueryID() << category << LL_ENDL; - + mSearchResults->deleteAllItems(); mSearchResults->setCommentText(LLTrans::getString("searching")); mNumResultsReturned = 0; @@ -1729,7 +1826,7 @@ void FSPanelSearchLand::find() void FSPanelSearchLand::onBtnFind() { resetSearch(); - + find(); } @@ -1737,7 +1834,7 @@ void FSPanelSearchLand::onBtnNext() { mStartSearch += RESULT_PAGE_SIZE; getChildView("land_back")->setEnabled(TRUE); - + find(); } @@ -1745,7 +1842,7 @@ void FSPanelSearchLand::onBtnBack() { mStartSearch -= RESULT_PAGE_SIZE; getChildView("land_back")->setEnabled(mStartSearch > 0); - + find(); } @@ -1775,51 +1872,56 @@ void FSPanelSearchLand::onSelectItem() } FSFloaterSearch* search_instance = LLFloaterReg::getTypedInstance("search"); if (search_instance) + { search_instance->FSFloaterSearch::onSelectedItem(mSearchResults->getSelectedValue(), FSFloaterSearch::SC_PLACE); + } } // static void FSPanelSearchLand::processSearchReply(LLMessageSystem* msg, void**) { - LLUUID agent_id; - LLUUID query_id; - LLUUID parcel_id; + LLUUID agent_id; + LLUUID query_id; + LLUUID parcel_id; std::string name; - std::string land_sku; - std::string land_type; - BOOL auction; - BOOL for_sale; - S32 price; - S32 area; - + std::string land_sku; + std::string land_type; + BOOL auction; + BOOL for_sale; + S32 price; + S32 area; + msg->getUUID("AgentData", "AgentID", agent_id); msg->getUUID("QueryData", "QueryID", query_id); - + // Not for us - if (agent_id != gAgent.getID()) return; + if (agent_id != gAgentID) + { + return; + } LL_DEBUGS("Search") << "received directory request - QueryID: " << query_id << " AgentID: " << agent_id << LL_ENDL; - + FSPanelSearchLand* self = (FSPanelSearchLand*)FSFloaterSearch::getSearchPanel("panel_ls_land"); - + // floater is closed or these are not results from our last request if (NULL == self || query_id != self->mQueryID) { return; } - + LLScrollListCtrl* search_results = self->getChild("search_results_land"); // clear "Searching" label on first results if (self->mNumResultsReturned++ == 0) { search_results->deleteAllItems(); } - + static LLUICachedControl use_price("FindLandPrice", 1); static LLUICachedControl use_area("FindLandArea", 1); S32 limit_price = self->childGetValue("edit_price").asInteger(); S32 limit_area = self->childGetValue("edit_area").asInteger(); - - BOOL found_one = FALSE; + + bool found_one = false; S32 num_new_rows = msg->getNumberOfBlocks("QueryReplies"); if (num_new_rows == 0 && self->mResultsReceived == 0) { @@ -1829,7 +1931,7 @@ void FSPanelSearchLand::processSearchReply(LLMessageSystem* msg, void**) search_results->setCommentText(LLTrans::getString("not_found", map)); } self->mResultsReceived += num_new_rows; - + S32 not_auction = 0; for (S32 i = 0; i < num_new_rows; i++) { @@ -1849,7 +1951,7 @@ void FSPanelSearchLand::processSearchReply(LLMessageSystem* msg, void**) { LL_DEBUGS("Search") << "Got: " << name << " ClassifiedID: " << parcel_id << LL_ENDL; search_results->setEnabled(TRUE); - found_one = TRUE; + found_one = true; if ( msg->getSizeFast(_PREHASH_QueryReplies, i, _PREHASH_ProductSKU) > 0 ) { msg->getStringFast( _PREHASH_QueryReplies, _PREHASH_ProductSKU, land_sku, i); @@ -1861,15 +1963,21 @@ void FSPanelSearchLand::processSearchReply(LLMessageSystem* msg, void**) land_type = LLTrans::getString("land_type_unknown"); } if (parcel_id.isNull()) + { continue; + } if (use_price && (price > limit_price)) + { continue; + } if (use_area && (area < limit_area)) + { continue; - + } + LLSD content; LLSD element; - + element["id"] = parcel_id; if (auction) { @@ -1889,12 +1997,12 @@ void FSPanelSearchLand::processSearchReply(LLMessageSystem* msg, void**) element["columns"][0]["type"] = "icon"; element["columns"][0]["value"] = "Icon_Place"; } - + element["columns"][1]["column"] = "land_name"; element["columns"][1]["value"] = name; - + content["place_name"] = name; - + std::string buffer = "Auction"; if (!auction) { @@ -1903,16 +2011,20 @@ void FSPanelSearchLand::processSearchReply(LLMessageSystem* msg, void**) } element["columns"][2]["column"] = "price"; element["columns"][2]["value"] = price; - + element["columns"][3]["column"] = "area"; element["columns"][3]["value"] = area; if (!auction) { F32 ppm; if (area > 0) + { ppm = (F32)price / (F32)area; + } else + { ppm = 0.f; + } std::string ppm_buffer = llformat("%.1f", ppm); element["columns"][4]["column"] = "ppm"; element["columns"][4]["value"] = ppm_buffer; @@ -1922,10 +2034,10 @@ void FSPanelSearchLand::processSearchReply(LLMessageSystem* msg, void**) element["columns"][4]["column"] = "ppm"; element["columns"][4]["value"] = "1.0"; } - + element["columns"][5]["column"] = "land_type"; element["columns"][5]["value"] = land_type; - + search_results->addElement(element, ADD_BOTTOM); self->mResultsContent[parcel_id.asString()] = content; } @@ -1974,7 +2086,7 @@ BOOL FSPanelSearchClassifieds::postBuild() mSearchResults->setEnabled(FALSE); mSearchResults->setCommentText(LLTrans::getString("no_results")); } - + mClassifiedsCategory = getChild("classifieds_category"); if (mClassifiedsCategory) { @@ -2010,7 +2122,7 @@ void FSPanelSearchClassifieds::find() mSearchResults->setCommentText(LLTrans::getString("search_short")); return; } - + static LLUICachedControl inc_pg("ShowPGClassifieds", 1); static LLUICachedControl inc_mature("ShowMatureClassifieds", 0); static LLUICachedControl inc_adult("ShowAdultClassifieds", 0); @@ -2022,19 +2134,23 @@ void FSPanelSearchClassifieds::find() U32 category = mClassifiedsCategory->getValue().asInteger(); BOOL auto_renew = FALSE; U32 flags = pack_classified_flags_request(auto_renew, inc_pg, inc_mature, inc_adult); - + mResultsReceived = 0; if (mQueryID.notNull()) + { mQueryID.setNull(); + } mQueryID.generate(); - + if (mStartSearch < 0) + { mStartSearch = 0; - + } + gMessageSystem->newMessageFast(_PREHASH_DirClassifiedQuery); gMessageSystem->nextBlockFast(_PREHASH_AgentData); - gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); - gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); + gMessageSystem->addUUIDFast(_PREHASH_AgentID, gAgentID); + gMessageSystem->addUUIDFast(_PREHASH_SessionID, gAgentSessionID); gMessageSystem->nextBlockFast(_PREHASH_QueryData); gMessageSystem->addUUIDFast(_PREHASH_QueryID, getQueryID()); gMessageSystem->addStringFast(_PREHASH_QueryText, text); @@ -2043,7 +2159,7 @@ void FSPanelSearchClassifieds::find() gMessageSystem->addS32Fast(_PREHASH_QueryStart, mStartSearch); gAgent.sendReliableMessage(); LL_DEBUGS("Search") << "Firing off classified ad search request: " << getQueryID() << LL_ENDL; - + mSearchResults->deleteAllItems(); mSearchResults->setCommentText(LLTrans::getString("searching")); mNumResultsReturned = 0; @@ -2056,9 +2172,9 @@ void FSPanelSearchClassifieds::onBtnFind() { LLSearchHistory::getInstance()->addEntry(text); } - + resetSearch(); - + find(); } @@ -2066,7 +2182,7 @@ void FSPanelSearchClassifieds::onBtnNext() { mStartSearch += RESULT_PAGE_SIZE; getChildView("classifieds_back")->setEnabled(TRUE); - + find(); } @@ -2074,7 +2190,7 @@ void FSPanelSearchClassifieds::onBtnBack() { mStartSearch -= RESULT_PAGE_SIZE; getChildView("classifieds_back")->setEnabled(mStartSearch > 0); - + find(); } @@ -2104,29 +2220,34 @@ void FSPanelSearchClassifieds::onSelectItem() } FSFloaterSearch* search_instance = LLFloaterReg::getTypedInstance("search"); if (search_instance) + { search_instance->FSFloaterSearch::onSelectedItem(mSearchResults->getSelectedValue(), FSFloaterSearch::SC_CLASSIFIED); + } } // static void FSPanelSearchClassifieds::processSearchReply(LLMessageSystem* msg, void**) { - LLUUID agent_id; - LLUUID query_id; - LLUUID classified_id; - std::string name; - U32 creation_date; - U32 expiration_date; - S32 price_for_listing; - + LLUUID agent_id; + LLUUID query_id; + LLUUID classified_id; + std::string name; + U32 creation_date; + U32 expiration_date; + S32 price_for_listing; + msg->getUUID("AgentData", "AgentID", agent_id); msg->getUUID("QueryData", "QueryID", query_id); - + // Not for us - if (agent_id != gAgent.getID()) return; + if (agent_id != gAgentID) + { + return; + } LL_DEBUGS("Search") << "received directory request - QueryID: " << query_id << " AgentID: " << agent_id << LL_ENDL; - + FSPanelSearchClassifieds* self = (FSPanelSearchClassifieds*)FSFloaterSearch::getSearchPanel("panel_ls_classifieds"); - + if (msg->getNumberOfBlocks("StatusData")) { U32 status; @@ -2136,21 +2257,21 @@ void FSPanelSearchClassifieds::processSearchReply(LLMessageSystem* msg, void**) LLNotificationsUtil::add("SearchWordBanned"); } } - + // floater is closed or these are not results from our last request if (NULL == self || query_id != self->mQueryID) { return; } - + LLScrollListCtrl* search_results = self->getChild("search_results_classifieds"); - + // Clear "Searching" label on first results if (self->mNumResultsReturned++ == 0) { search_results->deleteAllItems(); } - + // Check for status messages if (msg->getNumberOfBlocks("StatusData")) { @@ -2183,8 +2304,8 @@ void FSPanelSearchClassifieds::processSearchReply(LLMessageSystem* msg, void**) return; } } - - BOOL found_one = FALSE; + + bool found_one = false; S32 num_new_rows = msg->getNumberOfBlocks("QueryReplies"); if (num_new_rows == 0 && self->mResultsReceived == 0) { @@ -2195,7 +2316,7 @@ void FSPanelSearchClassifieds::processSearchReply(LLMessageSystem* msg, void**) } self->mResultsReceived += num_new_rows; num_new_rows = self->showNextButton(num_new_rows); - + for (S32 i = 0; i < num_new_rows; i++) { msg->getUUID( "QueryReplies", "ClassifiedID", classified_id, i); @@ -2215,25 +2336,25 @@ void FSPanelSearchClassifieds::processSearchReply(LLMessageSystem* msg, void**) { LL_DEBUGS("Search") << "Got: " << name << " ClassifiedID: " << classified_id << LL_ENDL; search_results->setEnabled(TRUE); - found_one = TRUE; - + found_one = true; + LLSD content; LLSD element; - + element["id"] = classified_id; - + element["columns"][0]["column"] = "icon"; element["columns"][0]["type"] = "icon"; element["columns"][0]["value"] = "icon_top_pick.tga"; - + element["columns"][1]["column"] = "classified_name"; element["columns"][1]["value"] = name; - + element["columns"][2]["column"] = "price"; element["columns"][2]["value"] = price_for_listing; - + content["name"] = name; - + search_results->addElement(element, ADD_BOTTOM); self->mResultsContent[classified_id.asString()] = content; } @@ -2287,20 +2408,20 @@ BOOL FSPanelSearchEvents::postBuild() mEventsMode->setCommitCallback(boost::bind(&FSPanelSearchEvents::onSearchModeChanged, this)); mEventsMode->selectFirstItem(); } - + childSetAction("events_next", boost::bind(&FSPanelSearchEvents::onBtnNext, this)); childSetAction("events_back", boost::bind(&FSPanelSearchEvents::onBtnBack, this)); childSetAction("events_tomorrow", boost::bind(&FSPanelSearchEvents::onBtnTomorrow, this)); childSetAction("events_yesterday", boost::bind(&FSPanelSearchEvents::onBtnYesterday, this)); childSetAction("events_today", boost::bind(&FSPanelSearchEvents::onBtnToday, this)); - + getChildView("events_next")->setEnabled(FALSE); getChildView("events_back")->setEnabled(FALSE); getChildView("events_tomorrow")->setEnabled(FALSE); getChildView("events_yesterday")->setEnabled(FALSE); getChildView("events_today")->setEnabled(FALSE); setDay(0); - + return TRUE; } @@ -2310,9 +2431,9 @@ void FSPanelSearchEvents::focusDefaultElement() } void FSPanelSearchEvents::find() -{ +{ std::string text = filterShortWords(mSearchComboBox->getSimple()); - + static LLUICachedControl inc_pg("ShowPGEvents", 1); static LLUICachedControl inc_mature("ShowMatureEvents", 0); static LLUICachedControl inc_adult("ShowAdultEvents", 0); @@ -2321,41 +2442,57 @@ void FSPanelSearchEvents::find() LLNotificationsUtil::add("NoContentToSearch"); return; } - + U32 category = findChild("events_category")->getSelectedValue().asInteger(); U32 scope = DFQ_DATE_EVENTS; if (gAgent.wantsPGOnly()) + { scope |= DFQ_PG_SIMS_ONLY; + } bool mature_enabled = gAgent.canAccessMature(); bool adult_enabled = gAgent.canAccessAdult(); if (inc_pg) + { scope |= DFQ_INC_PG; + } if (inc_mature && mature_enabled) + { scope |= DFQ_INC_MATURE; + } if (inc_adult && adult_enabled) + { scope |= DFQ_INC_ADULT; - + } + std::ostringstream string; - + if ("current" == childGetValue("events_search_mode").asString()) + { string << "u|"; + } else + { string << mDay << "|"; + } string << category << "|"; string << text; - + mResultsReceived = 0; if (mQueryID.notNull()) + { mQueryID.setNull(); + } mQueryID.generate(); - + if (mStartSearch < 0) + { mStartSearch = 0; - + } + gMessageSystem->newMessage("DirFindQuery"); gMessageSystem->nextBlock("AgentData"); - gMessageSystem->addUUID("AgentID", gAgent.getID()); - gMessageSystem->addUUID("SessionID", gAgent.getSessionID()); + gMessageSystem->addUUID("AgentID", gAgentID); + gMessageSystem->addUUID("SessionID", gAgentSessionID); gMessageSystem->nextBlock("QueryData"); gMessageSystem->addUUID("QueryID", getQueryID()); gMessageSystem->addString("QueryText", string.str()); @@ -2363,7 +2500,7 @@ void FSPanelSearchEvents::find() gMessageSystem->addS32("QueryStart", mStartSearch); gAgent.sendReliableMessage(); LL_DEBUGS("Search") << "Firing off search request: " << getQueryID() << " Search Text: " << string.str() << LL_ENDL; - + mSearchResults->deleteAllItems(); mSearchResults->setCommentText(LLTrans::getString("searching")); mNumResultsReturned = 0; @@ -2372,13 +2509,13 @@ void FSPanelSearchEvents::find() void FSPanelSearchEvents::onBtnFind() { std::string text = mSearchComboBox->getSimple(); - if(!text.empty()) + if (!text.empty()) { LLSearchHistory::getInstance()->addEntry(text); } - + resetSearch(); - + find(); } @@ -2386,7 +2523,7 @@ void FSPanelSearchEvents::onBtnNext() { mStartSearch += RESULT_PAGE_SIZE; getChildView("events_back")->setEnabled(TRUE); - + find(); } @@ -2394,7 +2531,7 @@ void FSPanelSearchEvents::onBtnBack() { mStartSearch -= RESULT_PAGE_SIZE; getChildView("events_back")->setEnabled(mStartSearch > 0); - + find(); } @@ -2402,7 +2539,7 @@ void FSPanelSearchEvents::onBtnTomorrow() { resetSearch(); setDay(mDay + 1); - + find(); } @@ -2410,7 +2547,7 @@ void FSPanelSearchEvents::onBtnYesterday() { resetSearch(); setDay(mDay - 1); - + find(); } @@ -2418,7 +2555,7 @@ void FSPanelSearchEvents::onBtnToday() { resetSearch(); setDay(0); - + find(); } @@ -2449,7 +2586,7 @@ void FSPanelSearchEvents::setDay(S32 day) { mDay = day; struct tm* internal_time; - + time_t utc = time_corrected(); utc += day * 24 * 60 * 60; internal_time = utc_to_pacific_time(utc, is_daylight_savings()); @@ -2477,35 +2614,40 @@ void FSPanelSearchEvents::onSelectItem() S32 event_id = mSearchResults->getSelectedValue(); FSFloaterSearch* search_instance = LLFloaterReg::getTypedInstance("search"); if (search_instance) + { search_instance->FSFloaterSearch::onSelectedEvent(event_id); + } } // static void FSPanelSearchEvents::processSearchReply(LLMessageSystem* msg, void**) { - LLUUID agent_id; - LLUUID query_id; - LLUUID owner_id; + LLUUID agent_id; + LLUUID query_id; + LLUUID owner_id; std::string name; std::string date; - + msg->getUUID("AgentData", "AgentID", agent_id); msg->getUUID("QueryData", "QueryID", query_id); - + // Not for us - if (agent_id != gAgent.getID()) return; + if (agent_id != gAgentID) + { + return; + } LL_DEBUGS("Search") << "received directory request - QueryID: " << query_id << " AgentID: " << agent_id << LL_ENDL; - + FSPanelSearchEvents* self = (FSPanelSearchEvents*)FSFloaterSearch::getSearchPanel("panel_ls_events"); - + // floater is closed or these are not results from our last request if (NULL == self || query_id != self->mQueryID) { return; } - + LLScrollListCtrl* search_results = self->getChild("search_results_events"); - + // Clear "Searching" label on first results if (self->mNumResultsReturned++ == 0) { @@ -2561,7 +2703,7 @@ void FSPanelSearchEvents::processSearchReply(LLMessageSystem* msg, void**) return; } } - + S32 num_new_rows = msg->getNumberOfBlocks("QueryReplies"); if (num_new_rows == 0 && self->mResultsReceived == 0) { @@ -2570,20 +2712,20 @@ void FSPanelSearchEvents::processSearchReply(LLMessageSystem* msg, void**) search_results->setEnabled(FALSE); search_results->setCommentText(LLTrans::getString("not_found", map)); } - + self->mResultsReceived += num_new_rows; num_new_rows = self->showNextButton(num_new_rows); static LLUICachedControl inc_pg("ShowPGEvents", 1); static LLUICachedControl inc_mature("ShowMatureEvents", 0); static LLUICachedControl inc_adult("ShowAdultEvents", 0); - BOOL found_one = FALSE; + bool found_one = false; for (S32 i = 0; i < num_new_rows; i++) { U32 event_id; U32 unix_time; U32 event_flags; - + msg->getUUID( "QueryReplies", "OwnerID", owner_id, i); msg->getString( "QueryReplies", "Name", name, i); msg->getU32( "QueryReplies", "EventID", event_id, i); @@ -2614,13 +2756,13 @@ void FSPanelSearchEvents::processSearchReply(LLMessageSystem* msg, void**) continue; } search_results->setEnabled(TRUE); - found_one = TRUE; + found_one = true; LLSD content; LLSD element; - + element["id"] = llformat("%u", event_id); - + if (event_flags == EVENT_FLAG_ADULT) { element["columns"][0]["column"] = "icon"; @@ -2641,16 +2783,16 @@ void FSPanelSearchEvents::processSearchReply(LLMessageSystem* msg, void**) } element["columns"][1]["column"] = "name"; element["columns"][1]["value"] = name; - + element["columns"][2]["column"] = "date"; element["columns"][2]["value"] = date; - + element["columns"][3]["column"] = "time"; element["columns"][3]["value"] = llformat("%u", unix_time); - + content["name"] = name; content["event_id"] = (S32)event_id; - + search_results->addElement(element, ADD_BOTTOM); std::string event = llformat("%u", event_id); self->mResultsContent[event] = content; @@ -2694,14 +2836,17 @@ BOOL FSPanelSearchWeb::postBuild() void FSPanelSearchWeb::loadURL(const SearchQuery &p) { - if (!mWebBrowser || !p.validateBlock()) return; - + if (!mWebBrowser || !p.validateBlock()) + { + return; + } + // work out the subdir to use based on the requested category LLSD subs = LLSD().with("CATEGORY", (mCategoryPaths.has(p.category) ? mCategoryPaths[p.category].asString() : mCategoryPaths["all"].asString())); - + // add the search query string subs["QUERY"] = LLURI::escape(p.query); - + // add the permissions token that login.cgi gave us // We use "search_token", and fallback to "auth_token" if not present. LLSD search_token = LLLoginInstance::getInstance()->getResponse("search_token"); @@ -2710,7 +2855,7 @@ void FSPanelSearchWeb::loadURL(const SearchQuery &p) search_token = LLLoginInstance::getInstance()->getResponse("auth_token"); } subs["AUTH_TOKEN"] = search_token.asString(); - + // add the user's preferred maturity (can be changed via prefs) std::string maturity; if (gAgent.prefersAdult()) @@ -2726,10 +2871,10 @@ void FSPanelSearchWeb::loadURL(const SearchQuery &p) maturity = "13"; // PG } subs["MATURITY"] = maturity; - + // add the user's god status subs["GODLIKE"] = gAgent.isGodlike() ? "1" : "0"; - + // Get the search URL and expand all of the substitutions // (also adds things like [LANGUAGE], [VERSION], [OS], etc.) std::string url; @@ -2745,9 +2890,9 @@ void FSPanelSearchWeb::loadURL(const SearchQuery &p) { url = LFSimFeatureHandler::instance().searchURL(); } - + url = LLWeb::expandURLSubstitutions(url, subs); - + // Finally, load the URL in the webpanel mWebBrowser->navigateTo(url, HTTP_CONTENT_TEXT_HTML); } @@ -2774,8 +2919,11 @@ void FSPanelSearchWeb::draw() std::string filterShortWords(std::string query_string) { - if (query_string.length() < 1) return ""; - + if (query_string.length() < 1) + { + return ""; + } + std::string final_query; bool filtered = false; boost::char_separator sep(" "); @@ -2799,7 +2947,7 @@ std::string filterShortWords(std::string query_string) filtered = true; } } - + if (filtered) { LLSD args = LLSD().with("FINALQUERY", final_query); @@ -2811,14 +2959,17 @@ std::string filterShortWords(std::string query_string) void fillSearchComboBox(LLSearchComboBox* search_combo) { - if(search_combo == NULL) return; - + if (search_combo == NULL) + { + return; + } + LLSearchHistory::getInstance()->load(); - + LLSearchHistory::search_history_list_t search_list = LLSearchHistory::getInstance()->getSearchHistoryList(); LLSearchHistory::search_history_list_t::const_iterator it = search_list.begin(); - for( ; search_list.end() != it; ++it) + for ( ; search_list.end() != it; ++it) { LLSearchHistory::LLSearchHistoryItem item = *it; search_combo->add(item.search_query); diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp index 40073b7ecd..48ce18e105 100644 --- a/indra/newview/llviewercontrol.cpp +++ b/indra/newview/llviewercontrol.cpp @@ -199,18 +199,7 @@ static bool handleAvatarHoverOffsetChanged(const LLSD& newvalue) { if (isAgentAvatarValid()) { - // [Legacy bake] - //gAgentAvatarp->setHoverIfRegionEnabled(); - if (gAgent.getRegion()->avatarHoverHeightEnabled()) - { - LLVector3 avOffset(0.0f, 0.0f, llclamp(newvalue.asReal(), MIN_HOVER_Z, MAX_HOVER_Z)); - gAgentAvatarp->setHoverOffset(avOffset, true); - } - else if (!gAgentAvatarp->isUsingServerBakes()) - { - gAgentAvatarp->computeBodySize(); - } - // [Legacy bake] + gAgentAvatarp->setHoverIfRegionEnabled(); } return true; } diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp index c2aefc0621..a90668e57e 100644 --- a/indra/newview/llvoavatarself.cpp +++ b/indra/newview/llvoavatarself.cpp @@ -296,6 +296,12 @@ void LLVOAvatarSelf::setHoverIfRegionEnabled() setHoverOffset(LLVector3(0.0, 0.0, llclamp(hover_z,MIN_HOVER_Z,MAX_HOVER_Z))); LL_INFOS("Avatar") << avString() << " set hover height from debug setting " << hover_z << LL_ENDL; } + // [Legacy bake] + else if (!isUsingServerBakes()) + { + computeBodySize(); + } + // [Legacy bake] else { setHoverOffset(LLVector3(0.0, 0.0, 0.0)); diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 39ad7952d2..019b9cefc2 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -34,7 +34,7 @@ Error de inicialización de gráficos. Actualiza tu controlador de gráficos. - [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([ADDRESS_SIZE]bit) ([CHANNEL]) + [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL] [ADDRESS_SIZE]bit) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] @@ -64,10 +64,11 @@ Tarjeta gráfica: [GRAPHICS_CARD] Versión de OpenGL: [OPENGL_VERSION] +RestrainedLove API: [RLV_VERSION] Versión de libcurl: [LIBCURL_VERSION] Versión de J2C Decoder: [J2C_VERSION] Versión de Audio Driver: [AUDIO_DRIVER_VERSION] -[LIBCEF_VERSION] +[LIBCEF_VERSION] Versión LibVLC: [LIBVLC_VERSION] Versión del servidor de voz: [VOICE_VERSION] diff --git a/indra/newview/skins/default/xui/pl/floater_buy_land.xml b/indra/newview/skins/default/xui/pl/floater_buy_land.xml index 0d57d1f851..15b3c1d236 100644 --- a/indra/newview/skins/default/xui/pl/floater_buy_land.xml +++ b/indra/newview/skins/default/xui/pl/floater_buy_land.xml @@ -210,7 +210,7 @@ Działka ta zawiera 512 m² ziemi. Masz 2,100 L$. -