MAINT-6238 Warn user if Trash is overflowing
parent
783cc9756a
commit
ac6af25508
|
|
@ -4845,6 +4845,17 @@
|
|||
<key>Value</key>
|
||||
<integer>7</integer>
|
||||
</map>
|
||||
<key>InventoryTrashMaxCapacity</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
<string>Maximum capacity of the Trash folder. User will ve offered to clean it up when exceeded.</string>
|
||||
<key>Persist</key>
|
||||
<integer>1</integer>
|
||||
<key>Type</key>
|
||||
<string>U32</string>
|
||||
<key>Value</key>
|
||||
<integer>5000</integer>
|
||||
</map>
|
||||
<key>MarketplaceListingsSortOrder</key>
|
||||
<map>
|
||||
<key>Comment</key>
|
||||
|
|
|
|||
|
|
@ -2065,6 +2065,7 @@ BOOL LLItemBridge::removeItem()
|
|||
}
|
||||
|
||||
LLNotifications::instance().forceResponse(params, 0);
|
||||
model->checkTrashOverflow();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -771,6 +771,22 @@ void LLInventoryModel::collectDescendentsIf(const LLUUID& id,
|
|||
}
|
||||
}
|
||||
|
||||
U32 LLInventoryModel::getDescendentsCountRecursive(const LLUUID& id, U32 max_item_limit)
|
||||
{
|
||||
LLInventoryModel::cat_array_t cats;
|
||||
LLInventoryModel::item_array_t items;
|
||||
gInventory.collectDescendents(id, cats, items, LLInventoryModel::INCLUDE_TRASH);
|
||||
|
||||
U32 items_found = items.size() + cats.size();
|
||||
|
||||
for (U32 i = 0; i < cats.size() && items_found <= max_item_limit; ++i)
|
||||
{
|
||||
items_found += getDescendentsCountRecursive(cats[i]->getUUID(), max_item_limit - items_found);
|
||||
}
|
||||
|
||||
return items_found;
|
||||
}
|
||||
|
||||
void LLInventoryModel::addChangedMaskForLinks(const LLUUID& object_id, U32 mask)
|
||||
{
|
||||
const LLInventoryObject *obj = getObject(object_id);
|
||||
|
|
@ -3333,6 +3349,7 @@ void LLInventoryModel::processMoveInventoryItem(LLMessageSystem* msg, void**)
|
|||
//----------------------------------------------------------------------------
|
||||
|
||||
// Trash: LLFolderType::FT_TRASH, "ConfirmEmptyTrash"
|
||||
// Trash: LLFolderType::FT_TRASH, "TrashIsFull" when trash exceeds maximum capacity
|
||||
// Lost&Found: LLFolderType::FT_LOST_AND_FOUND, "ConfirmEmptyLostAndFound"
|
||||
|
||||
bool LLInventoryModel::callbackEmptyFolderType(const LLSD& notification, const LLSD& response, LLFolderType::EType preferred_type)
|
||||
|
|
@ -3414,6 +3431,8 @@ void LLInventoryModel::removeCategory(const LLUUID& category_id)
|
|||
changeCategoryParent(cat, trash_id, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
checkTrashOverflow();
|
||||
}
|
||||
|
||||
void LLInventoryModel::removeObject(const LLUUID& object_id)
|
||||
|
|
@ -3444,6 +3463,16 @@ void LLInventoryModel::removeObject(const LLUUID& object_id)
|
|||
}
|
||||
}
|
||||
|
||||
void LLInventoryModel::checkTrashOverflow()
|
||||
{
|
||||
static const U32 trash_max_capacity = gSavedSettings.getU32("InventoryTrashMaxCapacity");
|
||||
const LLUUID trash_id = findCategoryUUIDForType(LLFolderType::FT_TRASH);
|
||||
if (getDescendentsCountRecursive(trash_id, trash_max_capacity) >= trash_max_capacity)
|
||||
{
|
||||
gInventory.emptyFolderType("TrashIsFull", LLFolderType::FT_TRASH);
|
||||
}
|
||||
}
|
||||
|
||||
const LLUUID &LLInventoryModel::getRootFolderID() const
|
||||
{
|
||||
return mRootFolderID;
|
||||
|
|
|
|||
|
|
@ -258,6 +258,9 @@ public:
|
|||
|
||||
// Follow parent chain to the top.
|
||||
bool getObjectTopmostAncestor(const LLUUID& object_id, LLUUID& result) const;
|
||||
|
||||
private:
|
||||
U32 getDescendentsCountRecursive(const LLUUID& id, U32 max_item_limit);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Find
|
||||
|
|
@ -399,6 +402,8 @@ public:
|
|||
/// removeItem() or removeCategory(), whichever is appropriate
|
||||
void removeObject(const LLUUID& object_id);
|
||||
|
||||
void checkTrashOverflow();
|
||||
|
||||
protected:
|
||||
void updateLinkedObjectsFromPurge(const LLUUID& baseobj_id);
|
||||
|
||||
|
|
|
|||
|
|
@ -5990,6 +5990,18 @@ Are you sure you want to permanently delete the contents of your Trash?
|
|||
yestext="OK"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="TrashIsFull"
|
||||
type="alertmodal">
|
||||
Your trash is overflowing. This may cause problems logging in.
|
||||
<tag>confirm</tag>
|
||||
<usetemplate
|
||||
name="okcancelbuttons"
|
||||
notext="I will empty trash later"
|
||||
yestext="Empty trash now"/>
|
||||
</notification>
|
||||
|
||||
<notification
|
||||
icon="alertmodal.tga"
|
||||
name="ConfirmClearBrowserCache"
|
||||
|
|
|
|||
Loading…
Reference in New Issue