Request: Allow filtering nonlinks or links in the custom inventory filter
This commit is contained in:
@@ -917,6 +917,7 @@ void LLInventoryFilter::toLLSD(LLSD& data) const
|
|||||||
data["substring"] = (LLSD::String)getFilterSubString();
|
data["substring"] = (LLSD::String)getFilterSubString();
|
||||||
data["sort_order"] = (LLSD::Integer)getSortOrder();
|
data["sort_order"] = (LLSD::Integer)getSortOrder();
|
||||||
data["since_logoff"] = (LLSD::Boolean)isSinceLogoff();
|
data["since_logoff"] = (LLSD::Boolean)isSinceLogoff();
|
||||||
|
data["filter_links"] = (LLSD::Integer)getFilterLinks();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLInventoryFilter::fromLLSD(LLSD& data)
|
void LLInventoryFilter::fromLLSD(LLSD& data)
|
||||||
@@ -960,6 +961,11 @@ void LLInventoryFilter::fromLLSD(LLSD& data)
|
|||||||
{
|
{
|
||||||
setDateRangeLastLogoff((bool)data["since_logoff"].asBoolean());
|
setDateRangeLastLogoff((bool)data["since_logoff"].asBoolean());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (data.has("filter_links"))
|
||||||
|
{
|
||||||
|
setFilterLinks(data["filter_links"].asInteger());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
U64 LLInventoryFilter::getFilterTypes() const
|
U64 LLInventoryFilter::getFilterTypes() const
|
||||||
|
|||||||
@@ -72,6 +72,7 @@ public:
|
|||||||
BOOL getCheckShowEmpty();
|
BOOL getCheckShowEmpty();
|
||||||
BOOL getCheckSinceLogoff();
|
BOOL getCheckSinceLogoff();
|
||||||
|
|
||||||
|
void onLinks(const LLSD& val);
|
||||||
static void onTimeAgo(LLUICtrl*, void *);
|
static void onTimeAgo(LLUICtrl*, void *);
|
||||||
static void onCloseBtn(void* user_data);
|
static void onCloseBtn(void* user_data);
|
||||||
static void selectAllTypes(void* user_data);
|
static void selectAllTypes(void* user_data);
|
||||||
@@ -81,6 +82,7 @@ protected:
|
|||||||
LLPanelMainInventory* mPanelMainInventory;
|
LLPanelMainInventory* mPanelMainInventory;
|
||||||
LLSpinCtrl* mSpinSinceDays;
|
LLSpinCtrl* mSpinSinceDays;
|
||||||
LLSpinCtrl* mSpinSinceHours;
|
LLSpinCtrl* mSpinSinceHours;
|
||||||
|
LLUICtrl* mRadioLinks;
|
||||||
LLInventoryFilter* mFilter;
|
LLInventoryFilter* mFilter;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -918,12 +920,21 @@ BOOL LLFloaterInventoryFinder::postBuild()
|
|||||||
mSpinSinceDays = getChild<LLSpinCtrl>("spin_days_ago");
|
mSpinSinceDays = getChild<LLSpinCtrl>("spin_days_ago");
|
||||||
childSetCommitCallback("spin_days_ago", onTimeAgo, this);
|
childSetCommitCallback("spin_days_ago", onTimeAgo, this);
|
||||||
|
|
||||||
|
mRadioLinks = getChild<LLUICtrl>("radio_links");
|
||||||
|
mRadioLinks->setCommitCallback(std::bind(&LLFloaterInventoryFinder::onLinks, this, std::placeholders::_2));
|
||||||
|
|
||||||
childSetAction("Close", onCloseBtn, this);
|
childSetAction("Close", onCloseBtn, this);
|
||||||
|
|
||||||
updateElementsFromFilter();
|
updateElementsFromFilter();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLFloaterInventoryFinder::onLinks(const LLSD& val)
|
||||||
|
{
|
||||||
|
auto value = val.asInteger();
|
||||||
|
mFilter->setFilterLinks(value == 0 ? LLInventoryFilter::FILTERLINK_INCLUDE_LINKS : value == 1 ? LLInventoryFilter::FILTERLINK_EXCLUDE_LINKS : LLInventoryFilter::FILTERLINK_ONLY_LINKS);
|
||||||
|
}
|
||||||
|
|
||||||
void LLFloaterInventoryFinder::onTimeAgo(LLUICtrl *ctrl, void *user_data)
|
void LLFloaterInventoryFinder::onTimeAgo(LLUICtrl *ctrl, void *user_data)
|
||||||
{
|
{
|
||||||
LLFloaterInventoryFinder *self = (LLFloaterInventoryFinder *)user_data;
|
LLFloaterInventoryFinder *self = (LLFloaterInventoryFinder *)user_data;
|
||||||
@@ -995,6 +1006,8 @@ void LLFloaterInventoryFinder::updateElementsFromFilter()
|
|||||||
getChild<LLUICtrl>("check_since_logoff")->setValue(mFilter->isSinceLogoff());
|
getChild<LLUICtrl>("check_since_logoff")->setValue(mFilter->isSinceLogoff());
|
||||||
mSpinSinceHours->set((F32)(hours % 24));
|
mSpinSinceHours->set((F32)(hours % 24));
|
||||||
mSpinSinceDays->set((F32)(hours / 24));
|
mSpinSinceDays->set((F32)(hours / 24));
|
||||||
|
auto value = mFilter->getFilterLinks();
|
||||||
|
mRadioLinks->setValue(value == LLInventoryFilter::FILTERLINK_INCLUDE_LINKS ? 0 : value == LLInventoryFilter::FILTERLINK_EXCLUDE_LINKS ? 1 : 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LLFloaterInventoryFinder::draw()
|
void LLFloaterInventoryFinder::draw()
|
||||||
|
|||||||
@@ -76,6 +76,12 @@
|
|||||||
<button bottom_delta="-24" enabled="true" follows="left|top" font="SansSerif"
|
<button bottom_delta="-24" enabled="true" follows="left|top" font="SansSerif"
|
||||||
halign="center" height="20" label="None" label_selected="None" left="8"
|
halign="center" height="20" label="None" label_selected="None" left="8"
|
||||||
mouse_opaque="true" name="None" scale_image="true" width="100" />
|
mouse_opaque="true" name="None" scale_image="true" width="100" />
|
||||||
|
<text bottom_delta="-16" left="3" follows="left|top" value="Links: "/>
|
||||||
|
<radio_group bottom_delta="-6" left_delta="27" follows="left|top" height="16" draw_border="false" name="radio_links">
|
||||||
|
<radio_item bottom_delta="-8" name="Any" label="Any" value="0"/>
|
||||||
|
<radio_item bottom_delta="0" left_delta="19" name="Only" label="Only" value="2"/>
|
||||||
|
<radio_item bottom_delta="0" left_delta="21" name="None" label="None" value="1"/>
|
||||||
|
</radio_group>
|
||||||
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
<check_box bottom_delta="-20" enabled="true" follows="left|top" font="SansSerifSmall"
|
||||||
height="16" initial_value="false" label="Always show folders" left="8"
|
height="16" initial_value="false" label="Always show folders" left="8"
|
||||||
mouse_opaque="true" name="check_show_empty" radio_style="false" width="144" />
|
mouse_opaque="true" name="check_show_empty" radio_style="false" width="144" />
|
||||||
@@ -96,7 +102,7 @@
|
|||||||
<spinner bottom_delta="-20" enabled="true" follows="left|top" height="16" increment="1"
|
<spinner bottom_delta="-20" enabled="true" follows="left|top" height="16" increment="1"
|
||||||
initial_val="0" label="Days Ago" label_width="64" left="8" max_val="10000"
|
initial_val="0" label="Days Ago" label_width="64" left="8" max_val="10000"
|
||||||
min_val="0" mouse_opaque="true" name="spin_days_ago" width="144" />
|
min_val="0" mouse_opaque="true" name="spin_days_ago" width="144" />
|
||||||
<button bottom_delta="-24" enabled="true" follows="top|right" font="SansSerif"
|
<button bottom_delta="-24" enabled="true" visible="false" follows="top|right" font="SansSerif"
|
||||||
halign="center" height="20" label="Close" label_selected="Close"
|
halign="center" height="20" label="Close" label_selected="Close"
|
||||||
mouse_opaque="true" name="Close" right="-6" scale_image="true" width="76" />
|
mouse_opaque="true" name="Close" right="-6" scale_image="true" width="76" />
|
||||||
</floater>
|
</floater>
|
||||||
|
|||||||
Reference in New Issue
Block a user