EXT-7929 FIXED Updated functionality of attaching object: loading indicator gets hidden when attaching is completed.
- Fixed crash when accessing singleton on application exit.
- Updated functionality of attaching object: loading indicator was not hidden.
* Reason: link to attachment was created without next appearance updating.
* Fix: passed "true" into LLAppearanceMgr::addCOFItemLink to call LLAppearanceMgr::updateAppearanceFromCOF when attachments is completed. (Like for clothing).
Reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/611/
--HG--
branch : product-engine
- Added method LLAccordionCtrl::getExpandedTab() which search for the first expanded accordion tab. This method is a bit of hacking, but I discussed it with Vadim Savchuk.
- LLAccordionCtrlTab::isExpanded() is made 'const'. This is necessary to call it from getExpandedTab() which is also 'const'.
- Added all provided Marketplace URLs (taken from EXT-7257) to the settings.xml. So URLs can be configured without recompilation.
- Added method LLCOFWearables::getSelectedItems() which can be used to get ALL selected items (not only one).
- Class LLShopURLDispatcher is implemented in the llpaneloutfitedit.cpp.
- Added callback LLPanelOutfitEdit::onShopButtonClicked() which calls LLShopURLDispatcher to send user to the correct URL.
- Added shop button (shop_btn) widget in panel_outfit_edit.xml. It has invalid icon for now. After review I'm going to reassign the ticket to someone who will provide correct icons.
Reviewed by Vadim Savchuk and Mike Antipov at https://codereview.productengine.com/secondlife/r/569/
--HG--
branch : product-engine
- added a separate filter combobox for the list view containing lots of items, all types of wearables, separated clothing and bodyparts items
- comboboxes are linked to the appropriate view, only one is shown
- got rid of excluding links in the folder view
- minor refactoring
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/573/
--HG--
branch : product-engine
1 Updated LLOutfitObserver to provide controlling of changing outfit name.
2 Added call of LLPanelOutfitEdit::updateCurrentOutfitName to LLPanelOutfitEdit::updateVerbs since both should be called on BOFChanged signal.
3 Corrected updating field LLOutfitObserver::mBaseOutfitLastVersion.
reviewed by Vadim Savchuk at https://codereview.productengine.com/secondlife/r/553/
--HG--
branch : product-engine
Fix:
- Save the UUID of a newly created wearable to start editing it right after it gets worn.
This approach replaces a temporary hack that invoked the editing panel whenever an item gets worn
(if the Appearance SP is opened at the time).
The hack only happened to work sometimes because the editing panel failed to open.
Other changes:
- Removed a check for inventory item completeness from LLAgentWearables::editWearable().
because the check often fails and doesn't appear to be needed at all.
- Added warning messages to LLAgentWearables::editWearable() so that it's easier to debug.
- Replaced duplicated code in LLPanelOutfitEdit::onEditWearableClicked() with a call to gAgentWearables.editWearable().
Reviewed by Nyx at https://codereview.productengine.com/secondlife/r/529/
--HG--
branch : product-engine
1 Added functionality for locking outfit in LLAppearanceMgr. Outfit should be locked when outfit related operation is started(now it is used for updateBaseOutfit) and unlocked when operation completed or timeout is exceeded.
2 Added outfit saved and outfit lock changed signals to LLOutfitObserver.
3 Updated LLPanelOutfitsInventory and LLPanelOutfitEdit with functionality of controlling 'save outfit' controls state('save outfit' controls should be enabled only if outfit isn't locked and outfit is dirty).
4 Renamed action label of method LLPanelOutfitsInventory::isActionEnabled "make_outfit" to "save_outfit".
--HG--
branch : product-engine
1 published LLCOFObserver as LLOutfitObserver(moved from llpaneloutfitedit.cpp to lloutfitobserver.h)
2 decoupled outfit edit panel and observer by replacing pointer to panel with signals and made observer as singleton
3 moved call of LLAppearanceMgr::getInstance()->updateIsDirty() from outfit edit panel to observer(discussed with IB)
4 modified updating of combo button state on outfit panel using LLOutfitObserver
5 modified refresh of outfit name and status on outfit change event using LLOutfitObserver
6 removed unnecessary LLWatchForOutfitRenameObserver that caused excessive updates of outfit panel status name
--HG--
branch : product-engine
* Moved initialization (with start fetch) of the LLFilteredWearableListManager into LLPanelOutfitEdit::onOpen
* LLFilteredWearableListManager::changed now ignores non-related inventory changes (CALLING_CARD, GESTURE, SORT)
Tried to fix an issue with empty Gesture list on startup with clean inventory cache.
Reason: logic is based on count of "inventory changed" events. In case of there was too many requests requested items can be removed from queue by mistake.
* Increased a number of the "change()" method calls to wait fetched items.
Unfortunately this only works if My Inventory category does not have too many children. An does not work if it has 2000+ items
Logic to remove item from the incompleted list should be based on timer and number of attempts.
Also add some debug information about fetching inventory category and its content to log.
Reviewed by Brad Payne at https://codereview.productengine.com/secondlife/r/456/
--HG--
branch : product-engine
- Hooked up Wear / Take off / Rename / Delete items in the My Outfits gear menu.
- Added "Create new..." to body part / clothing context menu in Edit Outfit.
- Added "Create new..." submenus to the Edit Outfit gear menu.
- Disabling the "Take Off" menu item of the clothing context menu in the Edit Outfit panel when it's irrelevant.
Reviewed by Nyx at https://codereview.productengine.com/secondlife/r/494/
--HG--
branch : product-engine
- relocated Add button (required substantial layout_stacks repositioning)
- got rid of switch/shop buttons
- reverted addition of adaptors for (accordion tabs/list view) inline button bars
* failed to get rid of an empty space above bottom bars when "add wearables panel" is invisible
(due to bug in the layout stack, when border is still drawn below layout panel which is only one visible)
https://jira.secondlife.com/secure/attachment/39854/empty+space+.jpg
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/481/
--HG--
branch : product-engine
- Removed extra gear button bar from "Edit Outfit" panel.
- Added one more dummy icon to "Add Wearable" panel button bar to chose the right dummy depending on the "Add Wearable" panel visibility.
Reviewed by Vadim Savchuk https://codereview.productengine.com/secondlife/r/473/
--HG--
branch : product-engine
* moved logic related to combo button from LLPanelOutfitEdit to LLSaveOutfitComboBtn class;
* used LLSaveOutfitComboBtn class in LLPanelOutfitsInventory;
reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/459/
--HG--
branch : product-engine
Added a check for visibility changes that should prevent users from getting
"stuck" in appearance editing mode by closing the appearance editor
prematurely (clicking sidebar hide, etc).
Camera state should be restored when panel is restored.
reviewed by Seraph
Main changes:
- Added callback for a '(+) button' to the LLCOFCallbacks and bind it with LLPanelOutfitEdit::onAddWearableClicked
- Created the callback(LLPanelOutfitEdit::onReplaceBodyPartMenuItemClicked) for 'Replace' menu item of context menu
Related changes:
- Changed LLFilteredWearableListManager so that it can use different functors (subclasses of LLInventoryCollectFunctor) as a criterion for LLInventoryItemsList filtering. Before it used only LLFindNonLinksByMask filter. Moved LLFindNonLinksByMask from to the llfilteredwearablelist.cpp to the llinventoryfunctions.h
- Created getter 'LLPanelDummyClothingListItem::getWearableType()' for LLPanelDummyClothingListItem
- Made 'add wearables panel' a member of LLPanelOutfitEdit so that not to use findChild each time panel is needed
Reviewed by Igor Borovkov at http://jira.secondlife.com/browse/EXT-7472
--HG--
branch : product-engine
Most changes are in xml, but changing of view buttons overlay icons in lists from add wearables is implemented in code. Dragbar icon was only added as file, it will be integrated in EXT-7255 (There is no dragbar between 'Edit Outfit' and 'Add to Outfit:' panels).
Reviewed by Neal Orman at https://codereview.productengine.com/secondlife/r/410/
--HG--
branch : product-engine
Again, as in EXT-7241, I tried to improve the way the appearance panels (outfits / edit outfit / edit wearables) are switched, this time aiming to eliminate redundant time-consuming operations (fetches/updated/etc).
I'm not particularly satisfied with the resulting code but it seems to work. A better solution might be to wrap the panels with LLSideTrayPanelContainer.
Additional minor changes:
- Fixed unsafe pointer cast in LLSidepanelAppearance::editWearable().
- Removed redundant onEditOutfitButtonClicked() and onEditWearBackClicked() methods from LLSidepanelAppearance.
Reviewed by Nyx at https://codereview.productengine.com/secondlife/r/395/
--HG--
branch : product-engine
- HandleDragAndDrop() method was overridden in the LLPanelOutfitEdit class to handle drag and drop operations of the Clothing, Body Parts and Attachments.
- In panel_outfit_edit.xml parameter allow_multi_select was set to true to allow multiple selections.
- Added class LLCOFDragAndDropObserver to implement the drag and drop.
- Class LLInventoryMoveFromWorldObserver renamed to LLInventoryAddItemByAssetObserver.
Drag and drop reimplemented using functionality of the LLInventoryAddItemByAssetObserver.
Reviewed by Neal Orman and Mike Antipov at https://codereview.productengine.com/secondlife/r/373/
--HG--
branch : product-engine
- Insert filter editor and inventory panels into layout_stack
- restored filter functionality for a list view
- added proper switching between flat list view and folder list view
- made a little optimization: got rid of redundant findChild calls because of childSetVisible(..., childGetValue(...));
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/362/
--HG--
branch : product-engine
- added observing changes in the COF (based on version changes of the COF category, COF's version is also updated when order of COF items is changed)
- got rid of outfit fetcher, cause the only used outfit is COF which is always in a fetched state
- minor cleanup
Reviewed by Mike Antipov and Neal Orman at https://codereview.productengine.com/secondlife/r/356/
--HG--
branch : product-engine
* reimplemented button bars as static panels not as list items (creating accordion - button bar - list view - adaptor/container)
* added management of items' buttons assording to inventory items' states
* assigned actions to clothing/bodyparts items' buttons
* got rid of separators as distinct items and made them as part of items
* removed ad-hoc up/down buttons
* removed "+" button from a button bar
Reviewed by Mike Antipov at https://codereview.productengine.com/secondlife/r/322
--HG--
branch : product-engine
1. Modified LLInventoryItemsList - implemented delayed item construction. Items are added during draw, not more than 50 items will be added in single draw. This lets us reduce system overload during multiple panel construction.
2. Implemented LLFilteredWearableListManager to populate inventory flat list with data. This class filters entire inventory according to specified filter and populates specified inventory list with data.
3. Created LLCommonUtil::computeDifference() to avoid code copy-pasting(will use it in all appropriate places in next review request)
Reviewed by Mike Antipov - https://codereview.productengine.com/secondlife/r/301/
--HG--
branch : product-engine
NOTE: this is a temporary fix, see EXT-6564(Fix wearable editing panels) for more info.
Fix info:
- Moved edit wearable button to place where it does not break widget paddings.
- Updated code that calculates button position.
- Sending button to front to ensure it is clickable and visible.
Not reviewed.
--HG--
branch : product-engine