diff options
-rw-r--r-- | indra/llui/llnotifications.cpp | 11 | ||||
-rw-r--r-- | indra/newview/app_settings/settings.xml | 6 | ||||
-rw-r--r-- | indra/newview/llpaneloutfitedit.cpp | 102 | ||||
-rw-r--r-- | indra/newview/llpaneloutfitedit.h | 6 | ||||
-rw-r--r-- | indra/newview/llviewermessage.cpp | 2 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_camera.xml | 15 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/notifications.xml | 2 |
7 files changed, 114 insertions, 30 deletions
diff --git a/indra/llui/llnotifications.cpp b/indra/llui/llnotifications.cpp index 621e72ce38..9e272a0949 100644 --- a/indra/llui/llnotifications.cpp +++ b/indra/llui/llnotifications.cpp @@ -34,6 +34,7 @@ #include "llnotifications.h" +#include "llinstantmessage.h" #include "llxmlnode.h" #include "lluictrl.h" #include "lluictrlfactory.h" @@ -41,6 +42,7 @@ #include "llsdserialize.h" #include "lltrans.h" #include "llnotificationslistener.h" +#include "llstring.h" #include <algorithm> #include <boost/regex.hpp> @@ -1487,7 +1489,14 @@ std::ostream& operator<<(std::ostream& s, const LLNotification& notification) void LLPostponedNotification::onCachedNameReceived(const LLUUID& id, const std::string& first, const std::string& last, bool is_group) { - gCacheName->getFullName(id, mName); + mName = first + " " + last; + + LLStringUtil::trim(mName); + if (mName.empty()) + { + llwarns << "Empty name received for Id: " << id << llendl; + mName = SYSTEM_FROM; + } modifyNotificationParams(); LLNotifications::instance().add(mParams); cleanup(); diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 1c32f33290..af296f918e 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -4666,7 +4666,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>https://www.xstreetsl.com/modules.php?name=Marketplace</string> + <string>http://marketplace.secondlife.com/</string> </map> <key>MarketplaceURL_objectFemale</key> <map> @@ -4721,7 +4721,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>https://www.xstreetsl.com/modules.php?name=Marketplace</string> + <string>http://marketplace.secondlife.com</string> </map> <key>MarketplaceURL_bodypartMale</key> <map> @@ -4732,7 +4732,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>https://www.xstreetsl.com/modules.php?name=Marketplace</string> + <string>http://marketplace.secondlife.com/</string> </map> <key>MarketplaceURL_glovesMale</key> <map> diff --git a/indra/newview/llpaneloutfitedit.cpp b/indra/newview/llpaneloutfitedit.cpp index 31c427d2ba..937b794686 100644 --- a/indra/newview/llpaneloutfitedit.cpp +++ b/indra/newview/llpaneloutfitedit.cpp @@ -71,6 +71,7 @@ #include "llsdutil.h" #include "llsidepanelappearance.h" #include "lltoggleablemenu.h" +#include "llvoavatarself.h" #include "llwearablelist.h" #include "llwearableitemslist.h" #include "llwearabletype.h" @@ -347,8 +348,8 @@ BOOL LLPanelOutfitEdit::postBuild() mInventoryItemsPanel = getChild<LLInventoryPanel>("folder_view"); mInventoryItemsPanel->setFilterTypes(ALL_ITEMS_MASK); mInventoryItemsPanel->setShowFolderState(LLInventoryFilter::SHOW_NON_EMPTY_FOLDERS); - mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this)); - mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this)); + mInventoryItemsPanel->setSelectCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this)); + mInventoryItemsPanel->getRootFolder()->setReshapeCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this)); mCOFDragAndDropObserver = new LLCOFDragAndDropObserver(mInventoryItemsPanel->getModel()); @@ -388,7 +389,7 @@ BOOL LLPanelOutfitEdit::postBuild() mWearablesListViewPanel = getChild<LLPanel>("filtered_wearables_panel"); mWearableItemsList = getChild<LLInventoryItemsList>("list_view"); mWearableItemsList->setCommitOnSelectionChange(true); - mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::onInventorySelectionChange, this)); + mWearableItemsList->setCommitCallback(boost::bind(&LLPanelOutfitEdit::updatePlusButton, this)); mWearableItemsList->setDoubleClickCallback(boost::bind(&LLPanelOutfitEdit::onPlusBtnClicked, this)); mSaveComboBtn.reset(new LLSaveOutfitComboBtn(this)); @@ -442,6 +443,9 @@ void LLPanelOutfitEdit::showAddWearablesPanel(bool show_add_wearables) mListViewFilterCmbBox->setVisible(false); showWearablesFilter(); + + // Reset mWearableItemsList position to top. See EXT-8180. + mWearableItemsList->goToTop(); } //switching button bars @@ -619,15 +623,52 @@ void LLPanelOutfitEdit::onShopButtonClicked() { static LLShopURLDispatcher url_resolver; + // will contain the resultant URL std::string url; + + if (isAgentAvatarValid()) + { + // try to get wearable type from 'Add More' panel first (EXT-7639) + LLWearableType::EType type = getAddMorePanelSelectionType(); + + if (type == LLWearableType::WT_NONE) + { + type = getCOFWearablesSelectionType(); + } + + ESex sex = gAgentAvatarp->getSex(); + + // WT_INVALID comes for attachments + if (type != LLWearableType::WT_INVALID && type != LLWearableType::WT_NONE) + { + url = url_resolver.resolveURL(type, sex); + } + + if (url.empty()) + { + url = url_resolver.resolveURL(mCOFWearables->getExpandedAccordionAssetType(), sex); + } + } + else + { + llwarns << "Agent avatar is invalid" << llendl; + + // the second argument is not important in this case: generic market place will be opened + url = url_resolver.resolveURL(LLWearableType::WT_NONE, SEX_FEMALE); + } + + LLWeb::loadURLExternal(url); +} + +LLWearableType::EType LLPanelOutfitEdit::getCOFWearablesSelectionType() const +{ std::vector<LLPanel*> selected_items; - mCOFWearables->getSelectedItems(selected_items); + LLWearableType::EType type = LLWearableType::WT_NONE; - ESex sex = gSavedSettings.getU32("AvatarSex") ? SEX_MALE : SEX_FEMALE; + mCOFWearables->getSelectedItems(selected_items); if (selected_items.size() == 1) { - LLWearableType::EType type = LLWearableType::WT_NONE; LLPanel* item = selected_items.front(); // LLPanelDummyClothingListItem is lower then LLPanelInventoryListItemBase in hierarchy tree @@ -639,20 +680,45 @@ void LLPanelOutfitEdit::onShopButtonClicked() { type = real_item->getWearableType(); } + } - // WT_INVALID comes for attachments - if (type != LLWearableType::WT_INVALID) + return type; +} + +LLWearableType::EType LLPanelOutfitEdit::getAddMorePanelSelectionType() const +{ + LLWearableType::EType type = LLWearableType::WT_NONE; + + if (mAddWearablesPanel != NULL && mAddWearablesPanel->getVisible()) + { + if (mInventoryItemsPanel != NULL && mInventoryItemsPanel->getVisible()) { - url = url_resolver.resolveURL(type, sex); + std::set<LLUUID> selected_uuids = mInventoryItemsPanel->getRootFolder()->getSelectionList(); + + if (selected_uuids.size() == 1) + { + type = getWearableTypeByItemUUID(*(selected_uuids.begin())); + } } - } + else if (mWearableItemsList != NULL && mWearableItemsList->getVisible()) + { + std::vector<LLUUID> selected_uuids; + mWearableItemsList->getSelectedUUIDs(selected_uuids); - if (url.empty()) - { - url = url_resolver.resolveURL(mCOFWearables->getExpandedAccordionAssetType(), sex); + if (selected_uuids.size() == 1) + { + type = getWearableTypeByItemUUID(selected_uuids.front()); + } + } } - LLWeb::loadURLExternal(url); + return type; +} + +LLWearableType::EType LLPanelOutfitEdit::getWearableTypeByItemUUID(const LLUUID& item_uuid) const +{ + LLViewerInventoryItem* item = gInventory.getLinkedItem(item_uuid); + return (item != NULL) ? item->getWearableType() : LLWearableType::WT_NONE; } void LLPanelOutfitEdit::onRemoveFromOutfitClicked(void) @@ -672,7 +738,7 @@ void LLPanelOutfitEdit::onEditWearableClicked(void) } } -void LLPanelOutfitEdit::onInventorySelectionChange() +void LLPanelOutfitEdit::updatePlusButton() { uuid_vec_t selected_items; getSelectedItemsUUID(selected_items); @@ -915,6 +981,9 @@ void LLPanelOutfitEdit::updateVerbs() mStatus->setText(outfit_is_dirty ? getString("unsaved_changes") : getString("now_editing")); updateCurrentOutfitName(); + + //updating state of "Wear Item" button previously known as "Plus" button + updatePlusButton(); } bool LLPanelOutfitEdit::switchPanels(LLPanel* switch_from_panel, LLPanel* switch_to_panel) @@ -950,9 +1019,6 @@ void LLPanelOutfitEdit::showFilteredWearablesListView(LLWearableType::EType type showAddWearablesPanel(true); showWearablesListView(); - // Reset mWearableItemsList position to top. See EXT-8180. - mWearableItemsList->goToTop(); - //e_list_view_item_type implicitly contains LLWearableType::EType starting from LVIT_SHAPE applyListViewFilter((EListViewItemType) (LVIT_SHAPE + type)); } diff --git a/indra/newview/llpaneloutfitedit.h b/indra/newview/llpaneloutfitedit.h index 1eef211276..770e2a229b 100644 --- a/indra/newview/llpaneloutfitedit.h +++ b/indra/newview/llpaneloutfitedit.h @@ -145,7 +145,7 @@ public: void onFolderViewFilterCommitted(LLUICtrl* ctrl); void onListViewFilterCommitted(LLUICtrl* ctrl); void onSearchEdit(const std::string& string); - void onInventorySelectionChange(); + void updatePlusButton(); void onPlusBtnClicked(void); void onVisibilityChange(const LLSD &in_visible_chain); @@ -198,6 +198,10 @@ private: void getCurrentItemUUID(LLUUID& selected_id); void onCOFChanged(); + LLWearableType::EType getCOFWearablesSelectionType() const; + LLWearableType::EType getAddMorePanelSelectionType() const; + LLWearableType::EType getWearableTypeByItemUUID(const LLUUID& item_uuid) const; + LLTextBox* mCurrentOutfitName; LLTextBox* mStatus; LLInventoryPanel* mInventoryItemsPanel; diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp index 07b6431c92..53fb01aec3 100644 --- a/indra/newview/llviewermessage.cpp +++ b/indra/newview/llviewermessage.cpp @@ -2585,7 +2585,7 @@ void process_improved_im(LLMessageSystem *msg, void **user_data) params.substitutions = substitutions; params.payload = payload; - LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, false); + LLPostponedNotification::add<LLPostponedServerObjectNotification>(params, from_id, from_group); } break; case IM_FROM_TASK_AS_ALERT: diff --git a/indra/newview/skins/default/xui/en/floater_camera.xml b/indra/newview/skins/default/xui/en/floater_camera.xml index 8c3aa2c9a4..da2be18db6 100644 --- a/indra/newview/skins/default/xui/en/floater_camera.xml +++ b/indra/newview/skins/default/xui/en/floater_camera.xml @@ -71,7 +71,8 @@ image_name="Cam_Preset_Front_Off" /> <panel_camera_item.selected_picture image_name="Cam_Preset_Front_On" /> - <panel_camera_item.text> + <panel_camera_item.text + name="front_view_text"> Front View </panel_camera_item.text> </panel_camera_item> @@ -85,7 +86,8 @@ image_name="Cam_Preset_Side_Off" /> <panel_camera_item.selected_picture image_name="Cam_Preset_Side_On" /> - <panel_camera_item.text> + <panel_camera_item.text + name="side_view_text"> Side View </panel_camera_item.text> </panel_camera_item> @@ -100,7 +102,8 @@ image_name="Cam_Preset_Back_Off" /> <panel_camera_item.selected_picture image_name="Cam_Preset_Back_On" /> - <panel_camera_item.text> + <panel_camera_item.text + name="rear_view_text"> Rear View </panel_camera_item.text> </panel_camera_item> @@ -122,7 +125,8 @@ <panel_camera_item.mousedown_callback function="CameraPresets.ChangeView" parameter="object_view" /> - <panel_camera_item.text> + <panel_camera_item.text + name="object_view_text"> Object View </panel_camera_item.text> <panel_camera_item.picture @@ -136,7 +140,8 @@ <panel_camera_item.mousedown_callback function="CameraPresets.ChangeView" parameter="mouselook_view" /> - <panel_camera_item.text> + <panel_camera_item.text + name="mouselook_view_text"> Mouselook View </panel_camera_item.text> <panel_camera_item.picture diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml index 60d3fb708e..04bdb4302c 100644 --- a/indra/newview/skins/default/xui/en/notifications.xml +++ b/indra/newview/skins/default/xui/en/notifications.xml @@ -819,7 +819,7 @@ Delete pick <nolink>[PICK]</nolink>? icon="alertmodal.tga" name="DeleteOutfits" type="alertmodal"> - Delete the selected outfit/s? + Delete the selected outfit? <usetemplate name="okcancelbuttons" notext="Cancel" |