STORM-316 FIXED Added an item to inventory gear menu to control "Sort System Folders to Top" option (was always "true").

Changed inventory gear menu sort items - now they have check marks on the left.
Made inventory sort options persist across sessions.
master
Seth ProductEngine 2010-11-17 21:40:04 +02:00
parent 3a36ed079c
commit fa2aeb07f8
3 changed files with 66 additions and 7 deletions

View File

@ -329,15 +329,23 @@ void LLPanelMainInventory::setSortBy(const LLSD& userdata)
if (sort_field == "name")
{
U32 order = getActivePanel()->getSortOrder();
getActivePanel()->setSortOrder( order & ~LLInventoryFilter::SO_DATE );
order &= ~LLInventoryFilter::SO_DATE;
getActivePanel()->setSortOrder( order );
gSavedSettings.setU32("InventorySortOrder", order);
gSavedSettings.setBOOL("Inventory.SortByName", TRUE );
gSavedSettings.setBOOL("Inventory.SortByDate", FALSE );
}
else if (sort_field == "date")
{
U32 order = getActivePanel()->getSortOrder();
getActivePanel()->setSortOrder( order | LLInventoryFilter::SO_DATE );
order |= LLInventoryFilter::SO_DATE;
getActivePanel()->setSortOrder( order );
gSavedSettings.setU32("InventorySortOrder", order);
gSavedSettings.setBOOL("Inventory.SortByName", FALSE );
gSavedSettings.setBOOL("Inventory.SortByDate", TRUE );
@ -375,6 +383,8 @@ void LLPanelMainInventory::setSortBy(const LLSD& userdata)
gSavedSettings.setBOOL("Inventory.SystemFoldersToTop", TRUE );
}
getActivePanel()->setSortOrder( order );
gSavedSettings.setU32("InventorySortOrder", order);
}
}
@ -915,6 +925,7 @@ void LLPanelMainInventory::initListCommandsHandlers()
));
mCommitCallbackRegistrar.add("Inventory.GearDefault.Custom.Action", boost::bind(&LLPanelMainInventory::onCustomAction, this, _2));
mEnableCallbackRegistrar.add("Inventory.GearDefault.Check", boost::bind(&LLPanelMainInventory::isActionChecked, this, _2));
mEnableCallbackRegistrar.add("Inventory.GearDefault.Enable", boost::bind(&LLPanelMainInventory::isActionEnabled, this, _2));
mMenuGearDefault = LLUICtrlFactory::getInstance()->createFromFile<LLToggleableMenu>("menu_inventory_gear_default.xml", gMenuHolder, LLViewerMenuHolderGL::child_registry_t::instance());
mGearMenuButton->setMenu(mMenuGearDefault);
@ -1000,6 +1011,11 @@ void LLPanelMainInventory::onCustomAction(const LLSD& userdata)
const LLSD arg = "date";
setSortBy(arg);
}
if (command_name == "sort_system_folders_to_top")
{
const LLSD arg = "systemfolderstotop";
setSortBy(arg);
}
if (command_name == "show_filters")
{
toggleFindOptions();
@ -1173,6 +1189,31 @@ BOOL LLPanelMainInventory::isActionEnabled(const LLSD& userdata)
return TRUE;
}
BOOL LLPanelMainInventory::isActionChecked(const LLSD& userdata)
{
const std::string command_name = userdata.asString();
if (command_name == "sort_by_name")
{
U32 order = getActivePanel()->getSortOrder();
return ~order & LLInventoryFilter::SO_DATE;
}
if (command_name == "sort_by_recent")
{
U32 order = getActivePanel()->getSortOrder();
return order & LLInventoryFilter::SO_DATE;
}
if (command_name == "sort_system_folders_to_top")
{
U32 order = getActivePanel()->getSortOrder();
return order & LLInventoryFilter::SO_SYSTEM_FOLDERS_TO_TOP;
}
return FALSE;
}
bool LLPanelMainInventory::handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept)
{
*accept = ACCEPT_NO;

View File

@ -136,6 +136,7 @@ protected:
void onTrashButtonClick();
void onClipboardAction(const LLSD& userdata);
BOOL isActionEnabled(const LLSD& command_name);
BOOL isActionChecked(const LLSD& userdata);
void onCustomAction(const LLSD& command_name);
bool handleDragAndDropToTrash(BOOL drop, EDragAndDropType cargo_type, EAcceptance* accept);
/**

View File

@ -16,22 +16,39 @@
</menu_item_call>
<menu_item_separator
layout="topleft" />
<menu_item_call
<menu_item_check
label="Sort by Name"
layout="topleft"
name="sort_by_name">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_by_name" />
</menu_item_call>
<menu_item_call
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_by_name" />
</menu_item_check>
<menu_item_check
label="Sort by Most Recent"
layout="topleft"
name="sort_by_recent">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_by_recent" />
</menu_item_call>
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_by_recent" />
</menu_item_check>
<menu_item_check
label="Sort System Folders to Top"
layout="topleft"
name="sort_system_folders_to_top">
<on_click
function="Inventory.GearDefault.Custom.Action"
parameter="sort_system_folders_to_top" />
<on_check
function="Inventory.GearDefault.Check"
parameter="sort_system_folders_to_top" />
</menu_item_check>
<menu_item_separator
layout="topleft" />
<menu_item_call