MAINT-6018 Open URL dialog spam
Added the ability to close all notifications from one owner at oncemaster
parent
3892685922
commit
30446d6afc
|
|
@ -1715,6 +1715,30 @@ void LLNotifications::cancelByName(const std::string& name)
|
|||
}
|
||||
}
|
||||
|
||||
void LLNotifications::cancelByOwner(const LLUUID ownerId)
|
||||
{
|
||||
std::vector<LLNotificationPtr> notifs_to_cancel;
|
||||
for (LLNotificationSet::iterator it = mItems.begin(), end_it = mItems.end();
|
||||
it != end_it;
|
||||
++it)
|
||||
{
|
||||
LLNotificationPtr pNotif = *it;
|
||||
if (pNotif && pNotif->getPayload().get("owner_id").asUUID() == ownerId)
|
||||
{
|
||||
notifs_to_cancel.push_back(pNotif);
|
||||
}
|
||||
}
|
||||
|
||||
for (std::vector<LLNotificationPtr>::iterator it = notifs_to_cancel.begin(), end_it = notifs_to_cancel.end();
|
||||
it != end_it;
|
||||
++it)
|
||||
{
|
||||
LLNotificationPtr pNotif = *it;
|
||||
pNotif->cancel();
|
||||
updateItem(LLSD().with("sigtype", "delete").with("id", pNotif->id()), pNotif);
|
||||
}
|
||||
}
|
||||
|
||||
void LLNotifications::update(const LLNotificationPtr pNotif)
|
||||
{
|
||||
LLNotificationSet::iterator it=mItems.find(pNotif);
|
||||
|
|
|
|||
|
|
@ -924,6 +924,7 @@ public:
|
|||
void add(const LLNotificationPtr pNotif);
|
||||
void cancel(LLNotificationPtr pNotif);
|
||||
void cancelByName(const std::string& name);
|
||||
void cancelByOwner(const LLUUID ownerId);
|
||||
void update(const LLNotificationPtr pNotif);
|
||||
|
||||
LLNotificationPtr find(LLUUID uuid);
|
||||
|
|
|
|||
|
|
@ -1092,6 +1092,10 @@ void LLScriptChiclet::onMenuItemClicked(const LLSD& user_data)
|
|||
{
|
||||
LLScriptFloaterManager::instance().removeNotification(getSessionId());
|
||||
}
|
||||
else if ("end_owner" == action)
|
||||
{
|
||||
LLScriptFloaterManager::instance().removeAllNotificationsByOwner(getSessionId());
|
||||
}
|
||||
}
|
||||
|
||||
void LLScriptChiclet::createPopupMenu()
|
||||
|
|
|
|||
|
|
@ -420,6 +420,18 @@ void LLScriptFloaterManager::onAddNotification(const LLUUID& notification_id)
|
|||
toggleScriptFloater(notification_id, set_new_message);
|
||||
}
|
||||
|
||||
void LLScriptFloaterManager::removeAllNotificationsByOwner(const LLUUID& notification_id)
|
||||
{
|
||||
LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
|
||||
if (notification != NULL && !notification->isCancelled())
|
||||
{
|
||||
LLSD payload = notification->getPayload();
|
||||
LLUUID owner = payload.get("owner_id").asUUID();
|
||||
|
||||
LLNotifications::instance().cancelByOwner(owner);
|
||||
}
|
||||
}
|
||||
|
||||
void LLScriptFloaterManager::removeNotification(const LLUUID& notification_id)
|
||||
{
|
||||
LLNotificationPtr notification = LLNotifications::instance().find(notification_id);
|
||||
|
|
|
|||
|
|
@ -59,6 +59,11 @@ public:
|
|||
*/
|
||||
void onAddNotification(const LLUUID& notification_id);
|
||||
|
||||
/**
|
||||
* Removes all notifications by owner id.
|
||||
*/
|
||||
void removeAllNotificationsByOwner(const LLUUID& notification_id);
|
||||
|
||||
/**
|
||||
* Removes notification.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -16,4 +16,12 @@
|
|||
function="ScriptChiclet.Action"
|
||||
parameter="end" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Close by owner"
|
||||
layout="topleft"
|
||||
name="CloseByOwner">
|
||||
<menu_item_call.on_click
|
||||
function="ScriptChiclet.Action"
|
||||
parameter="end_owner" />
|
||||
</menu_item_call>
|
||||
</menu>
|
||||
|
|
|
|||
Loading…
Reference in New Issue