- Moved wearable item name comparator from llcofwearables to llwearableitemslist.
- Added wearable item type comparator.
- Added item type and description getters to wearable item base class LLPanelInventoryListItemBase.
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/407/
--HG--
branch : product-engine
* LLResizeBar calls notifyParent on resizing before changing rect of view, bottomtray processed this notification to update other buttons.
* Had to move setup of buttons visibility on startup into LLBottomTray to ensure all buttons have necessary visibility BEFORE restore the width of the chat entry field;
* Updated layout between chatbar and speak button to show resize mouse pointer in the middle between them.
Implemented behavior: visible buttons shrink to their minimal width when the chat entry field gets wider.
Also were refactored:
* moved declaration of settings related to buttons visibility from the settings.xml to LLBottomTray.
* moved setting of control listeners to LLBottomTray.
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/403/
--HG--
branch : product-engine
Two problems:
1. AvatarList didn't hide popup menu when goes invisible.
2. (Real problem) MenuHolder View didn't process TAB key. Which leads to changing active ("focused") control. Which leads to the ability (for example) to switch tabs and hide popup menu parent view.
--HG--
branch : product-engine
- Added accordion tab title highlighting setter and title getter.
- Added filtered tabs title highlighting.
- Tabs which don't pass filter are hidden.
- Added applying filter on list refresh event to avoid refreshing list on every filter change.
- Moved part of LLTextUtil to llui/lluitextutil to reuse code in llaccordionctrltab.
- Fixed passing list size to mRefreshCompleteSignal.
- Added list refresh callback to LLInventoryItemsList for checking tab visibility without re-applying filter sub-string.
Committed to proceed with dependent tasks.
If there are any comments/suggestions related to text utils this part of code may be changed without requiring much effort.
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/363/
--HG--
branch : product-engine
- changed the LLInventoryItemsList::addNewItem() to add item to the list without immediately rearranging
- implemented LLFlatListViewEx::setFilterSubString(), sets up new filter string and filters the list.
- implemented LLFlatListViewEx::filterItems(), filters the list, rearranges and notifies parent about shape changes. The list items are filtered using the notify() functionality, without need in adding/removing them on each filter call. It sends 'match_filter' request to items and interprets the returned zero as sign of matched filter string, i.e. we don't hide items that don't support 'match_filter' action(separators etc).
- filtring of LLOutfitsList.
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/342/
--HG--
branch : product-engine
llui:
- Added accordion tab title setter.
- Added setters for accordion tab focus changes callbacks.
newview:
- Fixed observer used for outfit items collecting. Added checking number of fetched items.
- Added outfit selection and enabled "replace outfit" and "add to outfit" commands for selected outfit.
Reviewed by Mike Antipov https://codereview.productengine.com/secondlife/r/332/
--HG--
branch : product-engine
Simple perpetual loading indicator a la MacOS X or YouTube.
Implements spinning by changing pre-defined images.
The images are hardcoded, shared by all instances of the widget.
Number of rotations per second can be changed via params.
Reviewed by Mike at https://codereview.productengine.com/secondlife/r/320/
--HG--
branch : product-engine
llui:
- Setting container panel for accordion tab control to dynamically add tabs to accordions.
- Added method to dynamically remove accordion tabs.
- Added LLIconCtrl image setter.
newview:
- Class LLOutfitsList - a list of agents's outfits from "My Outfits" inventory category which represents each outfit by an accordion tab with a list of items inside it.
- Class LLWearableItemsList - a list of wearable items used in each accordion tab of "My Outfits" tab.
- Class LLInventoryItemsList - a base class for LLWearableItemsList that represents inventory items by panels in LLFlatListView.
- Class LLPanelInventoryItem - inventory item representation for a flat list. Item icon is set according to item type.
- Class LLInventoryCategoriesObserver - an observer used in LLOutfitsList for monitoring changes to "My Outfits" inventory category and updating outfits accordion tabs and list of items for each outfit.
Reviewed by Mike Antipov https://codereview.productengine.com/secondlife/r/285/
--HG--
branch : product-engine
Reason:
A) incorrect UP arrow handling in accordion control: invisible accordion tab was selected to handle selection.
B) invalid std::map item (in empty map) was used to make selection in Flat List
Fix: added checks against empty map before use front/back item pair before selecting first/last items.
Also updated processing of the UP key in accordion control to not select invisible accordion tab.
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/318/
--HG--
branch : product-engine
Implemented passing of entered filter substring without head spaces to search URI in help message for null filtered results.
* Updated setting "no item message" to use search term from filter editor for avatar & group lists and for inventory panels.
* Updated appropriate translatable strings to get [SEARCH_TERM] substitution.
* Updated processing of filter substring to pass original string to methods applied new filter.
Additional necessary changes
* Changed place to set "no item message" for group list from refresh to where filter is updated (like in avatar lists)
* Removed converting of filter substring to upper case in Places & My Appearance sidepanels (this conversion has already been implemented in where filter is applied)
* Added a separate message for Landmarks to set search URI to secondlife:///app/search/places for Lanmarks panel;
other inventory related panels have URL to all searched categories (secondlife:///app/search/all)
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/326/
--HG--
branch : product-engine
- Made the indicator rotate clockwise (by flipping the images and reversing the order they're traversed).
- The textures are now preloaded.
Approved by Erica.
--HG--
branch : product-engine
Added LLButton::setImagePressed(), there was no way to set pressed image at run-time. The only place where pressed image is initialized was LLButton constructor.
Replaced Maturity icon with button to simplify handling clicks. Icon does not provide click callback and we would need to handle mouse up/down events and track clicked widget.
Added icon for Moderate regions.
Did not find maturity help topic, added a "TODO".
Reviewed by Sergey Litovchuk - https://codereview.productengine.com/secondlife/r/243/
--HG--
branch : product-engine
llui:
- Setting container panel for accordion tab control to dynamically add tabs to accordions.
- Added method to dynamically remove accordion tabs.
- Added LLIconCtrl image setter.
newview:
- Class LLOutfitsList - a list of agents's outfits from "My Outfits" inventory category which represents each outfit by an accordion tab with a list of items inside it.
- Class LLWearableItemsList - a list of wearable items used in each accordion tab of "My Outfits" tab.
- Class LLInventoryItemsList - a base class for LLWearableItemsList that represents inventory items by panels in LLFlatListView.
- Class LLPanelInventoryItem - inventory item representation for a flat list. Item icon is set according to item type.
- Class LLInventoryCategoriesObserver - an observer used in LLOutfitsList for monitoring changes to "My Outfits" inventory category and updating outfits accordion tabs and list of items for each outfit.
Known issues:
- Only first outfit tab is displayed in "My Outfits" until this tab is expanded.
- Bottom bar buttons and filter field not functioning for "My Outfits" tab since LLOutfitsList still doesn't support selection, filtering and sorting.
- "My Outfits" and "Wearing" tabs of "Appearance" side panel might need a common interface to use LLOutfitsList and LLinventoryPanel as tabs in LLPanelOutfitsInventory or "Wearing" tab should be replaces with LLOutfitsList class object i.e. a flat list.
On review - https://codereview.productengine.com/secondlife/r/285/
--HG--
branch : product-engine
Utilized old save and load notification code.
Main concern was with notifications that have complex responder - UserGiveItem, ObjectGiveItem. Those responders are object with own fields that need to persist through sessions.
Notifications that should be saved are marked with persist="true" in notifications.xml
Notifications using functor responders are saved automatically.
Notifications using object responders need additional tuning. Responder object should be a) serializable(implement LLNotificationResponderInterface), b) registered with LLResponderRegistry.
At this point following notifications persist through sessions: UserGiveItem, ObjectGiveItem, TeleportOffered, FrienshipOffered.
Reviewed by Mike Antipov - https://codereview.productengine.com/secondlife/r/211/
--HG--
branch : notifications
Partial implementation of help text in case of empty list when filtered for Nearby and Recent lists of People panel:
* Extracted support implementation of several messages for empty list depend of filtering from LLGroupList to LLFlatListEx
* change inheritence of LLGroupList and LLAvatarList from LLFlatListView to LLFlatListViewEx
* updated panel people to init Nearby & Recent lists with appropriate messages.
--HG--
branch : product-engine
- There was two reasons:
1. Uninitialized variable in llsliderctrl.(h/cpp) that contains label size. This variable take part in calculation of TextBox size of label.
2. Font of 'label string' and text box was different. This causes wrong calculation of 'label string' length.
Reviwed by Vadim Savchuk and Mike Antipov at https://codereview.productengine.com/secondlife/r/246/
--HG--
branch : product-engine
Fixed code calculating title buttons rectangle, LLRect::isValid() does not indicate uninitialized rectangle, as a result rectangle was not properly initialized and had negative width.
Fixed title width.
Reviewed by Mike Antipov - https://codereview.productengine.com/secondlife/r/194/
--HG--
branch : product-engine
Includes: DEV-45800, DEV-45803 - Grid Manager
DEV-45804 - SLURL refactor
DEV-45801 - Single username field (for Identity Evolution and SLE Ldap)
Also,
Includes Certificate Management code allowing the viewer to connect to
grids not signed by a well know key (just like any web browser). Also
contains secure storage for things like passwords.
The security/certificate code is modular with the intention of adding modules
to directly use the operating system facilities for crypto if available.
(that's much more secure than we'll ever be)
Also, refactor of voice to modularize it, and add a diamondware voice module.
CR: Aimee, James, Lynx, Mani, Karina and a list of thousands
Found this issue while working on EXT-6564(Fix wearable editing panels) - Every single_expansion accordion is treated like "fit_parent" is set to "true" after changes made in 9805 : e6c5f3b23be1 (fix for EXT-5128 Groups accordions should all appear on-screen w/out scrolling (open accordion should fill space)).
Updated accordion to take into account "fit_parent" property.
Reviewed by Vadim Savchuk - https://codereview.productengine.com/secondlife/r/147/
--HG--
branch : product-engine
* added class for LLPostponedNotification to rpovide possibility postpone adding notification to notifications system till sender avatar name will be received from cache name;
* rolled back changes related to fix of EXT-4779;
* avoided passing avatar id when logging 'Object Return' notification to nearby chat;
eviewed by Vadim Savchuk at https://jira.secondlife.com/browse/EXT-6373
--HG--
branch : product-engine
Changed the way floater title is reshaped. Calculations takes title buttons into account instead of using hardcoded values.
--HG--
branch : product-engine