summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
authorGilbert Gonzales <gilbert@lindenlab.com>2012-08-16 12:14:25 -0700
committerGilbert Gonzales <gilbert@lindenlab.com>2012-08-16 12:14:25 -0700
commit41cba389f89ff16c0e574ea26d6a1ceb60133ef7 (patch)
tree12b7b78a0c7884cf49a7ed6b0d624cd30303a0b8 /indra/newview
parent7f26bbac80669ecd15b666cc6c5ffec77945438b (diff)
CHUI-269: Problem: When an item was purchased and delivered into the 'Received Items' panel, the badge icon and new item count would not show. This was due to the creation date of the folders not being set when a new item was added. Resolution: Now when an item is added into the 'Received Items' panel, the folder hierachy is updated, triggering the badge icon and new item count to show.
Diffstat (limited to 'indra/newview')
-rw-r--r--indra/newview/llinventorybridge.cpp13
-rw-r--r--indra/newview/llinventorybridge.h1
-rw-r--r--indra/newview/llinventorypanel.cpp11
-rw-r--r--indra/newview/llpanelmarketplaceinbox.cpp8
-rw-r--r--indra/newview/llpanelmarketplaceinboxinventory.cpp39
-rw-r--r--indra/newview/llpanelmarketplaceinboxinventory.h2
6 files changed, 39 insertions, 35 deletions
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index 6c3aaf5eec..215a08b34a 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -3098,6 +3098,19 @@ bool LLFolderBridge::removeItemResponse(const LLSD& notification, const LLSD& re
return FALSE;
}
+//Recursively update the folder's creation date
+void LLFolderBridge::updateHierarchyCreationDate(time_t date)
+{
+ if(getCreationDate() < date)
+ {
+ setCreationDate(date);
+ if(mParent)
+ {
+ static_cast<LLFolderBridge *>(mParent)->updateHierarchyCreationDate(date);
+ }
+ }
+}
+
void LLFolderBridge::pasteFromClipboard()
{
LLInventoryModel* model = getInventoryModel();
diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h
index fc0b15acad..6beccf19ae 100644
--- a/indra/newview/llinventorybridge.h
+++ b/indra/newview/llinventorybridge.h
@@ -274,6 +274,7 @@ public:
virtual BOOL removeItem();
BOOL removeSystemFolder();
bool removeItemResponse(const LLSD& notification, const LLSD& response);
+ void updateHierarchyCreationDate(time_t date);
virtual void pasteFromClipboard();
virtual void pasteLinkFromClipboard();
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 82cb268e9e..22e6943f50 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -774,12 +774,13 @@ LLFolderViewItem* LLInventoryPanel::buildNewViews(const LLUUID& id)
}
}
- if (folder_view_item)
- {
- folder_view_item->addToFolder(parent_folder);
+ if (folder_view_item)
+ {
+ llassert(parent_folder != NULL);
+ folder_view_item->addToFolder(parent_folder);
addItemID(id, folder_view_item);
- }
- }
+ }
+ }
// If this is a folder, add the children of the folder and recursively add any
// child folders.
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index ea0521e3a7..4a63585ed5 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -128,7 +128,6 @@ BOOL LLPanelMarketplaceInbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL dr
U32 LLPanelMarketplaceInbox::getFreshItemCount() const
{
-#if SUPPORTING_FRESH_ITEM_COUNT
//
// NOTE: When turning this on, be sure to test the no inbox/outbox case because this code probably
@@ -174,9 +173,6 @@ U32 LLPanelMarketplaceInbox::getFreshItemCount() const
}
return fresh_item_count;
-#else
- return getTotalItemCount();
-#endif
}
U32 LLPanelMarketplaceInbox::getTotalItemCount() const
@@ -231,7 +227,6 @@ void LLPanelMarketplaceInbox::draw()
args["[NUM]"] = item_count_str;
mInboxButton->setLabel(getString("InboxLabelWithArg", args));
-#if SUPPORTING_FRESH_ITEM_COUNT
// set green text to fresh item count
U32 fresh_item_count = getFreshItemCount();
mFreshCountCtrl->setVisible((fresh_item_count > 0));
@@ -240,9 +235,6 @@ void LLPanelMarketplaceInbox::draw()
{
mFreshCountCtrl->setTextArg("[NUM]", llformat("%d", fresh_item_count));
}
-#else
- mFreshCountCtrl->setVisible(FALSE);
-#endif
}
else
{
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.cpp b/indra/newview/llpanelmarketplaceinboxinventory.cpp
index 0d3fbe66d7..68aefa7fb7 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.cpp
+++ b/indra/newview/llpanelmarketplaceinboxinventory.cpp
@@ -95,22 +95,36 @@ LLInboxFolderViewFolder::LLInboxFolderViewFolder(const Params& p)
LLBadgeOwner(getHandle()),
mFresh(false)
{
-#if SUPPORTING_FRESH_ITEM_COUNT
initBadgeParams(p.new_badge());
-#endif
+}
+
+void LLInboxFolderViewFolder::addItem(LLFolderViewItem* item)
+{
+ LLFolderViewFolder::addItem(item);
+
+ if(item)
+ {
+ LLInvFVBridge* itemBridge = static_cast<LLInvFVBridge*>(item->getViewModelItem());
+ LLFolderBridge * bridge = static_cast<LLFolderBridge *>(getViewModelItem());
+ bridge->updateHierarchyCreationDate(itemBridge->getCreationDate());
+ }
+
+ // Compute freshness if our parent is the root folder for the inbox
+ if (mParentFolder == mRoot)
+ {
+ computeFreshness();
+ }
}
// virtual
void LLInboxFolderViewFolder::draw()
{
-#if SUPPORTING_FRESH_ITEM_COUNT
if (!badgeHasParent())
{
addBadgeToParentPanel();
}
setBadgeVisibility(mFresh);
-#endif
LLFolderViewFolder::draw();
}
@@ -157,17 +171,6 @@ void LLInboxFolderViewFolder::deFreshify()
gSavedPerAccountSettings.setU32("LastInventoryInboxActivity", time_corrected());
}
-// TODO RN: move this behavior to modelview?
-//void LLInboxFolderViewFolder::setCreationDate(time_t creation_date_utc)
-//{
-// mCreationDate = creation_date_utc;
-//
-// if (LLFolderViewItem::mParentFolder == mRoot)
-// {
-// computeFreshness();
-// }
-//}
-
//
// LLInboxFolderViewItem Implementation
//
@@ -177,22 +180,18 @@ LLInboxFolderViewItem::LLInboxFolderViewItem(const Params& p)
, LLBadgeOwner(getHandle())
, mFresh(false)
{
-#if SUPPORTING_FRESH_ITEM_COUNT
initBadgeParams(p.new_badge());
-#endif
}
void LLInboxFolderViewItem::addToFolder(LLFolderViewFolder* folder)
{
LLFolderViewItem::addToFolder(folder);
-#if SUPPORTING_FRESH_ITEM_COUNT
// Compute freshness if our parent is the root folder for the inbox
if (mParentFolder == mRoot)
{
computeFreshness();
}
-#endif
}
BOOL LLInboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)
@@ -205,14 +204,12 @@ BOOL LLInboxFolderViewItem::handleDoubleClick(S32 x, S32 y, MASK mask)
// virtual
void LLInboxFolderViewItem::draw()
{
-#if SUPPORTING_FRESH_ITEM_COUNT
if (!badgeHasParent())
{
addBadgeToParentPanel();
}
setBadgeVisibility(mFresh);
-#endif
LLFolderViewItem::draw();
}
diff --git a/indra/newview/llpanelmarketplaceinboxinventory.h b/indra/newview/llpanelmarketplaceinboxinventory.h
index 098969aca6..c05e18c300 100644
--- a/indra/newview/llpanelmarketplaceinboxinventory.h
+++ b/indra/newview/llpanelmarketplaceinboxinventory.h
@@ -33,7 +33,6 @@
#include "llfolderviewitem.h"
-#define SUPPORTING_FRESH_ITEM_COUNT 1
@@ -66,6 +65,7 @@ public:
LLInboxFolderViewFolder(const Params& p);
+ void addItem(LLFolderViewItem* item);
void draw();
void selectItem();