SL-19409 FIXED Received items panel in multiple inventory windows does not sync New tag status between windows
parent
c1a3c7b239
commit
7c3452fe44
|
|
@ -62,10 +62,13 @@ LLInboxInventoryPanel::LLInboxInventoryPanel(const LLInboxInventoryPanel::Params
|
|||
: LLInventoryPanel(p)
|
||||
{
|
||||
LLInboxNewItemsStorage::getInstance()->load();
|
||||
LLInboxNewItemsStorage::getInstance()->addInboxPanel(this);
|
||||
}
|
||||
|
||||
LLInboxInventoryPanel::~LLInboxInventoryPanel()
|
||||
{}
|
||||
{
|
||||
LLInboxNewItemsStorage::getInstance()->removeInboxPanel(this);
|
||||
}
|
||||
|
||||
void LLInboxInventoryPanel::initFromParams(const LLInventoryPanel::Params& params)
|
||||
{
|
||||
|
|
@ -108,6 +111,21 @@ LLFolderViewItem * LLInboxInventoryPanel::createFolderViewItem(LLInvFVBridge * b
|
|||
return LLUICtrlFactory::create<LLInboxFolderViewItem>(params);
|
||||
}
|
||||
|
||||
void LLInboxInventoryPanel::onRemoveItemFreshness(const LLUUID& item_id)
|
||||
{
|
||||
LLInboxFolderViewFolder* inbox_folder_view = dynamic_cast<LLInboxFolderViewFolder*>(getFolderByID(item_id));
|
||||
if(inbox_folder_view)
|
||||
{
|
||||
inbox_folder_view->setFresh(false);
|
||||
}
|
||||
|
||||
LLInboxFolderViewItem* inbox_item_view = dynamic_cast<LLInboxFolderViewItem*>(getItemByID(item_id));
|
||||
if(inbox_item_view)
|
||||
{
|
||||
inbox_item_view->setFresh(false);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// LLInboxFolderViewFolder Implementation
|
||||
//
|
||||
|
|
@ -340,4 +358,18 @@ void LLInboxNewItemsStorage::load()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLInboxNewItemsStorage::removeItem(const LLUUID& id)
|
||||
{
|
||||
mNewItemsIDs.erase(id);
|
||||
|
||||
//notify inbox panels
|
||||
for (auto inbox : mInboxPanels)
|
||||
{
|
||||
if(inbox)
|
||||
{
|
||||
inbox->onRemoveItemFreshness(id);
|
||||
}
|
||||
}
|
||||
}
|
||||
// eof
|
||||
|
|
|
|||
|
|
@ -49,6 +49,8 @@ public:
|
|||
void initFromParams(const LLInventoryPanel::Params&);
|
||||
LLFolderViewFolder* createFolderViewFolder(LLInvFVBridge * bridge, bool allow_drop);
|
||||
LLFolderViewItem * createFolderViewItem(LLInvFVBridge * bridge);
|
||||
|
||||
void onRemoveItemFreshness(const LLUUID& item_id);
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -77,6 +79,7 @@ public:
|
|||
void deFreshify();
|
||||
|
||||
bool isFresh() const { return mFresh; }
|
||||
void setFresh(bool is_fresh) { mFresh = is_fresh; }
|
||||
|
||||
protected:
|
||||
bool mFresh;
|
||||
|
|
@ -108,6 +111,7 @@ public:
|
|||
void deFreshify();
|
||||
|
||||
bool isFresh() const { return mFresh; }
|
||||
void setFresh(bool is_fresh) { mFresh = is_fresh; }
|
||||
|
||||
protected:
|
||||
bool mFresh;
|
||||
|
|
@ -125,11 +129,16 @@ public:
|
|||
void load();
|
||||
|
||||
void addFreshItem(const LLUUID& id) { mNewItemsIDs.insert(id); }
|
||||
void removeItem(const LLUUID& id) { mNewItemsIDs.erase(id); }
|
||||
void removeItem(const LLUUID& id);
|
||||
bool isItemFresh(const LLUUID& id) { return (mNewItemsIDs.find(id) != mNewItemsIDs.end()); }
|
||||
|
||||
void addInboxPanel(LLInboxInventoryPanel* inbox) { mInboxPanels.insert(inbox); }
|
||||
void removeInboxPanel(LLInboxInventoryPanel* inbox) { mInboxPanels.erase(inbox); }
|
||||
|
||||
private:
|
||||
std::set<LLUUID> mNewItemsIDs;
|
||||
|
||||
std::set<LLInboxInventoryPanel*> mInboxPanels;
|
||||
};
|
||||
|
||||
#endif //LL_INBOXINVENTORYPANEL_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue