Merge pull request #63 from minerjr/FIRE-35042

[FIRE-35042] Inventory - Only Coalesced Filter - More accessible
master
Beq Janus 2025-01-12 23:27:07 +00:00 committed by GitHub
commit f16e3510f0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 335 additions and 3 deletions

View File

@ -99,6 +99,11 @@ public:
void onCreatorSelfFilterCommit();
void onCreatorOtherFilterCommit();
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
void onOnlyCoalescedFilterCommit(); // Commit method for the Only Coalesced Filter checkbox
void onShowLinksFilterCommit(); // Commit method for the Show Links Filter combo box
// </FS:minerjr> [FIRE-35042]
void onPermissionsChanged(); // <FS:Zi> FIRE-1175 - Filter Permissions Menu
static void onTimeAgo(LLUICtrl*, void *);
@ -115,6 +120,10 @@ private:
LLCheckBoxCtrl* mCreatorSelf;
LLCheckBoxCtrl* mCreatorOthers;
LLInventoryFilter* mFilter;
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
LLCheckBoxCtrl* mOnlyCoalescedFilterCheck; // Stores the pointer to the Only Coalesced filter checkbox
LLComboBox* mShowLinksFilterCombo; // Stores the pointer to the Show Links filter combo box
// </FS:minerjr> [FIRE-35042]
};
///----------------------------------------------------------------------------
@ -191,6 +200,12 @@ LLPanelMainInventory::LLPanelMainInventory(const LLPanel::Params& p)
mEnableCallbackRegistrar.add("Inventory.GearDefault.Visible", boost::bind(&LLPanelMainInventory::isActionVisible, this, _2));
// </FS:Ansariel>
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Added new button to show all filters, not just Only Coalesced Filter
// Add a call back on the existing Inventory ShowFilters Check on the show_filters_inv_btn
mEnableCallbackRegistrar.add("Inventory.ShowFilters.Check", boost::bind(&LLPanelMainInventory::isAnyFilterChecked, this, _2));
// </FS:minerjr> [FIRE-35042]
mSavedFolderState = new LLSaveFolderState();
mSavedFolderState->setApply(false);
@ -908,6 +923,31 @@ bool LLPanelMainInventory::isSortByChecked(const LLSD& userdata)
}
// </FS:Zi> Sort By menu handlers
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Callback method used to update the Show Filter button on the inventory bottom UI
bool LLPanelMainInventory::isAnyFilterChecked(const LLSD& userdata)
{
// Validate that the command came from the right check box (Show Filters Modified)
const std::string command_name = userdata.asString();
if (command_name == "show_filters_modified")
{
// Only use thte active panel if it is valid
if (mActivePanel)
{
// Get the current filter object
LLInventoryFilter& filter = getCurrentFilter();
// If either of the three filter checks are true, Is Not Default, Filter Creator Type is not set to all creators,
// and Show Folder State is set to show folder state then we need to turn on the Show Filter Button check higlight,
// so return true if any of these are true.
return filter.isNotDefault() || filter.getFilterCreatorType() != LLInventoryFilter::FILTERCREATOR_ALL ||
filter.getShowFolderState() == LLInventoryFilter::SHOW_ALL_FOLDERS;
}
}
return false;
}
// </FS:minerjr> [FIRE-35042]
// static
bool LLPanelMainInventory::filtersVisible(void* user_data)
{
@ -1074,6 +1114,17 @@ void LLPanelMainInventory::onFilterTypeSelected(const std::string& filter_type_n
return;
}
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Special treatment for "coalesced" filter
else if (filter_type_name == "filter_type_coalesced")
{
// Turn on Only Coalesced filter. This will also trigger the button "only_coalesced_inv_btn"
// and menu item check "inventory_filter_coalesced_objects_only" toggle states.
getActivePanel()->setFilterCoalescedObjects(true);
// As all Coalesced objects are only objects, then set the filter type to filter_type_objects
filterTypes = mFilterMap["filter_type_objects"];
}
// </FS:minerjr> [FIRE-35042]
// invalid selection (broken XML?)
else
{
@ -1522,6 +1573,25 @@ bool LLFloaterInventoryFinder::postBuild()
mCreatorSelf->setCommitCallback(boost::bind(&LLFloaterInventoryFinder::onCreatorSelfFilterCommit, this));
mCreatorOthers->setCommitCallback(boost::bind(&LLFloaterInventoryFinder::onCreatorOtherFilterCommit, this));
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Get the Finder's Only Coalesced check box for use later on, instead of calling getChild everytime accessing it
mOnlyCoalescedFilterCheck = getChild<LLCheckBoxCtrl>("check_only_coalesced");
// If the checkbox could be found, then set the commit callback to onOnlyCoalescedFilterCommit to update the mFilter object
// with the value in the checkbox.
if (mOnlyCoalescedFilterCheck)
{
mOnlyCoalescedFilterCheck->setCommitCallback(boost::bind(&LLFloaterInventoryFinder::onOnlyCoalescedFilterCommit, this));
}
// Get the Finder's Show Links Filter combobox for use later as well to also prevent having to call get child everytime accessing it.
mShowLinksFilterCombo = getChild<LLComboBox>("inventory_filter_show_links_combo");
// If the combobox could be found, then set the commit callback to onShowLinksFilterCommit to update the mFilter object
// with the value in the checkbox.
if (mShowLinksFilterCombo)
{
mShowLinksFilterCombo->setCommitCallback(boost::bind(&LLFloaterInventoryFinder::onShowLinksFilterCommit, this));
}
// </FS:minerjr> [FIRE-35042]
childSetAction("Close", onCloseBtn, this);
// <FS:Ansariel> FIRE-5160: Don't reset inventory filter when clearing search term
@ -1635,6 +1705,26 @@ void LLFloaterInventoryFinder::updateElementsFromFilter()
getChild<LLUICtrl>("check_copy")->setValue((bool) (mFilter->getFilterPermissions() & PERM_COPY));
getChild<LLUICtrl>("check_transfer")->setValue((bool) (mFilter->getFilterPermissions() & PERM_TRANSFER));
// </FS:Zi>
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Sync the Only Coalesced Filter Checkbox with the value from the mFilter
// Make sure the Only Coalseced Filter checkbox and the filter are valid before accessing them.
if (mOnlyCoalescedFilterCheck && mFilter)
{
// Set the check value to the value of the UI to the Only Coalesced Objects of the mFilter
mOnlyCoalescedFilterCheck->set(mFilter->getFilterCoalescedObjects());
}
// Sync the Show Links Filter combo box with the value from the mFilter
// Make sure the Show Links Filter combo box and filter are both valid
if (mShowLinksFilterCombo && mFilter)
{
// Set the combo box value to the value of the FitlerLinks of the mFilter
// In the UI, the choices match the same values as the filter values
// 0 - Show Links, 2 Show Links Only, 1 = Hide Links
// So we convert from the filters from U64 to LLSD (integer) as the SelectByValue takes a LLSD object as an input
mShowLinksFilterCombo->selectByValue(LLSD(mFilter->getFilterLinks()));
}
// </FS:minerjr> [FIRE-35042]
}
void LLFloaterInventoryFinder::draw()
@ -1855,6 +1945,30 @@ void LLFloaterInventoryFinder::onPermissionsChanged()
}
// </FS:Zi>
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Callback method used to update the mFilter's Only Coalesced filter and syncs with the main inventory filter
void LLFloaterInventoryFinder::onOnlyCoalescedFilterCommit()
{
// This will sync the Filter panels value with the value of the mFilter object
if (mOnlyCoalescedFilterCheck && mFilter)
{
// Set the mFilter's Filter Coalesced Objects value to the Only Coalesced Filter Checkbox value
mFilter->setFilterCoalescedObjects(mOnlyCoalescedFilterCheck->getValue());
}
}
// Callback method used to update the mFilter's Show Links filter and syncs with the main inventory filter
void LLFloaterInventoryFinder::onShowLinksFilterCommit()
{
// This will sync the Show Links combo box with the value of the main inventory filter
if (mShowLinksFilterCombo)
{
// Set the mFilter's Filter Links value to the selected value of the Show Links Filter Combo.
// The values match up to the bit values that are used by the filter (0 = Show Links, 1 = Show Links Only, 2 = Hide Links)
mFilter->setFilterLinks((U64)mShowLinksFilterCombo->getSelectedValue().asInteger());
}
}
// </FS:minerjr> [FIRE-35042]
bool LLFloaterInventoryFinder::getCheckShowEmpty()
{
return getChild<LLUICtrl>("check_show_empty")->getValue();
@ -2741,6 +2855,14 @@ void LLPanelMainInventory::onCoalescedObjectsToggled(const LLSD& userdata)
{
getActivePanel()->setFilterCoalescedObjects(!getActivePanel()->getFilterCoalescedObjects());
}
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Update the Filter Finder window with the change to the filters, so they can sync
if (getFinder())
{
getFinder()->updateElementsFromFilter();
}
// <FS:minerjr> [FIRE-35042]
}
bool LLPanelMainInventory::isCoalescedObjectsChecked(const LLSD& userdata)
@ -2773,6 +2895,13 @@ void LLPanelMainInventory::onFilterLinksChecked(const LLSD& userdata)
{
getActivePanel()->setFilterLinks(LLInventoryFilter::FILTERLINK_EXCLUDE_LINKS);
}
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Update the Filter Finder window with the change to the filters, so they can sync
if (getFinder())
{
getFinder()->updateElementsFromFilter();
}
// <FS:minerjr> [FIRE-35042]
}
bool LLPanelMainInventory::isFilterLinksChecked(const LLSD& userdata)

View File

@ -189,6 +189,12 @@ protected:
bool isSortByChecked(const LLSD& userdata);
// </FS:Zi> Sort By menu handlers
// <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible
// Callback method for the new Show Filter button on the bottom button panel of the main inventory.
// Stays highlighted if any filter is enabled.
bool isAnyFilterChecked(const LLSD& userdata);
// </FS:minerjr> [FIRE-35042]
void saveTexture(const LLSD& userdata);
bool isSaveTextureEnabled(const LLSD& userdata);
void updateItemcountText();

View File

@ -738,6 +738,11 @@
<combo_box.item value="filter_type_snapshots" label="Snapshots" />
<combo_box.item value="filter_type_materials" label="Materials" />
<combo_box.item value="filter_type_settings" label="Settings" />
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<!-- Add new custom filter to toggle Only Coalesced on and switch to filter_type_objects as only objects can be combined -->
<combo_box.item value="filter_type_coalesced" label="Only Coalesced"/>
<!-- </FS:minerjr> [FIRE-35042] -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<combo_box.item value="filter_type_custom" label="Custom..." />
</combo_box>
@ -994,11 +999,43 @@
parameter="secondary_inventory" />
</button>
</panel>
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<!-- This is a new panel button for adding an on screen visual indicator that shows when any filter is enabled -->
<!-- A new inventory image was required to be used -->
<panel
follows="top|left"
height="25"
layout="topleft"
left_pad="0"
name="show_filters_panel"
width="32">
<button
follows="top|left"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="show_filters_18"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left="0"
name="show_filters_inv_btn"
tool_tip="Show Filters - Shows the filter side menu when selected. Becomes highlighted when any filter is enabled."
top="0"
width="31">
<button.commit_callback
function="Inventory.GearDefault.Custom.Action"
parameter="show_filters" />
<button.is_toggled_callback
function="Inventory.ShowFilters.Check"
parameter="show_filters_modified" />
</button>
</panel>
<!-- </FS:minerjr> [FIRE-35042] -->
<panel
follows="top|left|right"
height="25"
layout="topleft"
left_pad="0"
name="view_mode_panel"
width="32">
<button

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 645 B

View File

@ -844,7 +844,10 @@ with the same filename but different name
<texture name="TrashItem_Disabled" file_name="icons/TrashItem_Disabled.png" preload="true" />
<texture name="TrashItem_Off" file_name="icons/TrashItem_Off.png" preload="true" />
<texture name="TrashItem_Press" file_name="icons/TrashItem_Press.png" preload="true" />
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<!-- New UI 18 px image created for inventory UI for Show Filters toggle -->
<texture name="show_filters_18" file_name="bottomtray/show_filters_18.png" preload="true" />
<!-- </FS:minerjr> [FIRE-35042] -->
<texture name="inventory_18" file_name="bottomtray/inventory_18.png" preload="true" />
<texture name="chatbar_18" file_name="bottomtray/chatbar_18.png" preload="true" />
<texture name="nearbychat_18" file_name="toolbar_icons/nearbychat.png" preload="true" />

View File

@ -1,14 +1,17 @@
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- <FS:Zi> Changed height from 512 to 528 in this block -->
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<!-- Changed height from 528 to 598 to make room for new Only Coalesced and Show Links filter -->
<floater
legacy_header_height="18"
can_minimize="false"
height="548"
height="598"
layout="topleft"
name="Inventory Finder"
help_topic="inventory_finder"
title="Inventory Recent Items"
width="160">
<!-- </FS:minerjr> [FIRE-35042] -->
<icon
height="16"
image_name="Inv_Animation"
@ -280,6 +283,49 @@
top_pad="0"
width="144" />
<!-- </FS:Zi> -->
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<!-- Added new check box to allow finder panel the ability to set and view the Only Coalesced flag -->
<!-- Switched icon and checkbox left/right order to better fit aesthetics of the rest of the panel -->
<check_box
height="16"
label="Only Coalesced"
layout="topleft"
left="8"
name="check_only_coalesced"
top_pad="6"
width="106" />
<icon
height="16"
follows="left|top"
image_name="Inv_Object_Multi"
layout="topleft"
left_pad="3"
mouse_opaque="true"
name="icon_coalesced"
top_delta="0"
width="16" />
<!-- Added combo box for the link filters -->
<!-- The order matches the order in the Gear->menu, but the values are the actual filter value, used to simplify the actual code -->
<combo_box
follows="left|top"
height="23"
layout="topleft"
left="8"
top_pad="6"
tool_tip="Filters linked objects - objects can be linked in the Tools menu in edit mode"
name="inventory_filter_show_links_combo"
width="120">
<combo_box.item name="show_links"
label="Show Links"
value="0"/>
<combo_box.item name="show_links_only"
label="Show Links Only"
value="2"/>
<combo_box.item name="hide_links"
label="Hide Links"
value="1"/>
</combo_box>
<!-- </FS:minerjr> [FIRE-35042] -->
<check_box
height="16"
label="Created by me"

View File

@ -409,7 +409,7 @@
<on_check
function="Inventory.CoalescedObjects.Check"
parameter="coalesced_objects_only" />
</menu_item_check>
</menu_item_check>
<menu_item_separator>
<menu_item_separator.on_visible
function="Inventory.GearDefault.Visible"

View File

@ -182,6 +182,11 @@
<combo_box.item value="filter_type_snapshots" label="Snapshots" />
<combo_box.item value="filter_type_materials" label="Materials" />
<combo_box.item value="filter_type_settings" label="Settings" />
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<!-- Add new custom filter to toggle Only Coalesced on and switch to filter_type_objects as only objects can be combined -->
<combo_box.item value="filter_type_coalesced" label="Only Coalesced"/>
<!-- </FS:minerjr> [FIRE-35042] -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<combo_box.item value="filter_type_custom" label="Custom..." />
</combo_box>
@ -411,6 +416,38 @@
parameter="secondary_inventory" />
</button>
</panel>
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<!-- This is a new panel button for adding an on screen visual indicator that shows when any filter is enabled -->
<!-- A new inventory image was required to be used -->
<panel
follows="top|left"
height="25"
layout="topleft"
left_pad="0"
name="show_filters_panel"
width="32">
<button
follows="top|left"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="show_filters_18"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left="0"
name="show_filters_inv_btn"
tool_tip="Show Filters - Shows the filter side menu when selected. Becomes highlighted when any filter is enabled."
top="0"
width="31">
<button.commit_callback
function="Inventory.GearDefault.Custom.Action"
parameter="show_filters" />
<button.is_toggled_callback
function="Inventory.ShowFilters.Check"
parameter="show_filters_modified" />
</button>
</panel>
<!-- </FS:minerjr> [FIRE-35042] -->
<panel
follows="top|left"
height="25"

View File

@ -181,6 +181,11 @@
<combo_box.item value="filter_type_snapshots" label="Snapshots" />
<combo_box.item value="filter_type_materials" label="Materials" />
<combo_box.item value="filter_type_settings" label="Settings" />
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<!-- Add new custom filter to toggle Only Coalesced on and switch to filter_type_objects as only objects can be combined -->
<combo_box.item value="filter_type_coalesced" label="Only Coalesced"/>
<!-- </FS:minerjr> [FIRE-35042] -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<combo_box.item value="filter_type_custom" label="Custom..." />
</combo_box>
@ -410,6 +415,38 @@
parameter="secondary_inventory" />
</button>
</panel>
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<!-- This is a new panel button for adding an on screen visual indicator that shows when any filter is enabled -->
<!-- A new inventory image was required to be used -->
<panel
follows="top|left"
height="25"
layout="topleft"
left_pad="0"
name="show_filters_panel"
width="32">
<button
follows="top|left"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="show_filters_18"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left="0"
name="show_filters_inv_btn"
tool_tip="Show Filters - Shows the filter side menu when selected. Becomes highlighted when any filter is enabled."
top="0"
width="31">
<button.commit_callback
function="Inventory.GearDefault.Custom.Action"
parameter="show_filters" />
<button.is_toggled_callback
function="Inventory.ShowFilters.Check"
parameter="show_filters_modified" />
</button>
</panel>
<!-- </FS:minerjr> [FIRE-35042] -->
<panel
follows="top|left"
height="25"

View File

@ -183,6 +183,11 @@
<combo_box.item value="filter_type_snapshots" label="Snapshots" />
<combo_box.item value="filter_type_materials" label="Materials" />
<combo_box.item value="filter_type_settings" label="Settings" />
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<!-- Add new custom filter to toggle Only Coalesced on and switch to filter_type_objects as only objects can be combined -->
<combo_box.item value="filter_type_coalesced" label="Only Coalesced"/>
<!-- </FS:minerjr> [FIRE-35042] -->
<combo_box.item value="filter_separator" label="------------" enabled="false" />
<combo_box.item value="filter_type_custom" label="Custom..." />
</combo_box>
@ -413,6 +418,38 @@
parameter="secondary_inventory" />
</button>
</panel>
<!-- <FS:minerjr> [FIRE-35042] Inventory - Only Coalesced Filter - More accessible -->
<!-- This is a new panel button for adding an on screen visual indicator that shows when any filter is enabled -->
<!-- A new inventory image was required to be used -->
<panel
follows="top|left"
height="25"
layout="topleft"
left_pad="0"
name="show_filters_panel"
width="32">
<button
follows="top|left"
height="25"
image_hover_unselected="Toolbar_Middle_Over"
image_overlay="show_filters_18"
image_selected="Toolbar_Middle_Selected"
image_unselected="Toolbar_Middle_Off"
layout="topleft"
left="0"
name="show_filters_inv_btn"
tool_tip="Show Filters - Shows the filter side menu when selected. Becomes highlighted when any filter is enabled."
top="0"
width="31">
<button.commit_callback
function="Inventory.GearDefault.Custom.Action"
parameter="show_filters" />
<button.is_toggled_callback
function="Inventory.ShowFilters.Check"
parameter="show_filters_modified" />
</button>
</panel>
<!-- </FS:minerjr> [FIRE-35042] -->
<panel
follows="top|left"
height="25"