diff options
Diffstat (limited to 'indra/newview')
| -rw-r--r-- | indra/newview/llfolderviewitem.h | 10 | ||||
| -rw-r--r-- | indra/newview/llpanelmarketplaceinbox.cpp | 65 | ||||
| -rw-r--r-- | indra/newview/llpanelmarketplaceinbox.h | 14 | ||||
| -rw-r--r-- | indra/newview/llsidepanelinventory.cpp | 15 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/sidepanel_inventory.xml | 61 | 
5 files changed, 118 insertions, 47 deletions
diff --git a/indra/newview/llfolderviewitem.h b/indra/newview/llfolderviewitem.h index dbd7d5a370..789e104e8b 100644 --- a/indra/newview/llfolderviewitem.h +++ b/indra/newview/llfolderviewitem.h @@ -167,7 +167,7 @@ protected:  	void extendSelectionFromRoot(LLFolderViewItem* selection);  	// this is an internal method used for adding items to folders. A -	// no-op at this leve, but reimplemented in derived classes. +	// no-op at this level, but reimplemented in derived classes.  	virtual BOOL addItem(LLFolderViewItem*) { return FALSE; }  	virtual BOOL addFolder(LLFolderViewFolder*) { return FALSE; } @@ -366,6 +366,9 @@ public:  		UNKNOWN, TRASH, NOT_TRASH  	} ETrash; +	typedef std::list<LLFolderViewItem*> items_t; +	typedef std::list<LLFolderViewFolder*> folders_t; +  private:  	S32		mNumDescendantsSelected; @@ -374,8 +377,6 @@ public:		// Accessed needed by LLFolderViewItem  	S32 numSelected(void) const { return mNumDescendantsSelected + (isSelected() ? 1 : 0); }  protected: -	typedef std::list<LLFolderViewItem*> items_t; -	typedef std::list<LLFolderViewFolder*> folders_t;  	items_t mItems;  	folders_t mFolders;  	LLInventorySort	mSortFunction; @@ -537,6 +538,9 @@ public:  	time_t getCreationDate() const;  	bool isTrash() const;  	S32 getNumSelectedDescendants(void) const { return mNumDescendantsSelected; } + +	folders_t::const_iterator getFoldersBegin() const { return mFolders.cbegin(); } +	folders_t::const_iterator getFoldersEnd() const { return mFolders.cend(); }  };  //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp index a6d6308dc2..0fe2560fbf 100644 --- a/indra/newview/llpanelmarketplaceinbox.cpp +++ b/indra/newview/llpanelmarketplaceinbox.cpp @@ -34,9 +34,14 @@  static LLRegisterPanelClassWrapper<LLPanelMarketplaceInbox> t_panel_marketplace_inbox("panel_marketplace_inbox"); +const LLPanelMarketplaceInbox::Params& LLPanelMarketplaceInbox::getDefaultParams()  +{  +	return LLUICtrlFactory::getDefaultParams<LLPanelMarketplaceInbox>();  +} +  // protected -LLPanelMarketplaceInbox::LLPanelMarketplaceInbox() -	: LLPanel() +LLPanelMarketplaceInbox::LLPanelMarketplaceInbox(const Params& p) +	: LLPanel(p)  	, mInventoryPanel(NULL)  {  } @@ -69,7 +74,31 @@ BOOL LLPanelMarketplaceInbox::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL dr  	return TRUE;  } -U32 LLPanelMarketplaceInbox::getItemCount() const +U32 LLPanelMarketplaceInbox::getFreshItemCount() const +{ +	U32 fresh_item_count = 0; + +	LLFolderView * root_folder = mInventoryPanel->getRootFolder(); + +	const LLFolderViewFolder * inbox_folder = *(root_folder->getFoldersBegin()); + +	LLFolderViewFolder::folders_t::const_iterator folders_it = inbox_folder->getFoldersBegin(); +	LLFolderViewFolder::folders_t::const_iterator folders_end = inbox_folder->getFoldersEnd(); + +	for (; folders_it != folders_end; ++folders_it) +	{ +		const LLFolderViewFolder * folder = *folders_it; + +		if (folder->getCreationDate() > 1500) +		{ +			fresh_item_count++; +		} +	} + +	return fresh_item_count; +} + +U32 LLPanelMarketplaceInbox::getTotalItemCount() const  {  	LLInventoryModel* model = mInventoryPanel->getModel(); @@ -96,11 +125,16 @@ U32 LLPanelMarketplaceInbox::getItemCount() const  std::string LLPanelMarketplaceInbox::getBadgeString() const  {  	std::string item_count_str(""); -	U32 item_count = getItemCount(); -	if (item_count) +	// If side panel collapsed or expanded and not inventory +	if (LLSideTray::getInstance()->getCollapsed() || !LLSideTray::getInstance()->isPanelActive("sidepanel_inventory"))  	{ -		item_count_str = llformat("%d", item_count); +		U32 item_count = getFreshItemCount(); + +		if (item_count) +		{ +			item_count_str = llformat("%d", item_count); +		}  	}  	return item_count_str; @@ -108,17 +142,32 @@ std::string LLPanelMarketplaceInbox::getBadgeString() const  void LLPanelMarketplaceInbox::draw()  { -	std::string item_count_str = getBadgeString(); +	U32 item_count = getTotalItemCount(); + +	LLView * fresh_new_count_view = getChildView("inbox_fresh_new_count"); -	if (item_count_str.length() > 0) +	if (item_count > 0)  	{ +		std::string item_count_str = llformat("%d", item_count); +  		LLStringUtil::format_map_t args;  		args["[NUM]"] = item_count_str;  		getChild<LLButton>("inbox_btn")->setLabel(getString("InboxLabelWithArg", args)); + +		// set green text to fresh item count +		U32 fresh_item_count = getFreshItemCount(); +		fresh_new_count_view->setVisible((fresh_item_count > 0)); + +		if (fresh_item_count > 0) +		{ +			getChild<LLUICtrl>("inbox_fresh_new_count")->setTextArg("[NUM]", llformat("%d", fresh_item_count)); +		}  	}  	else  	{  		getChild<LLButton>("inbox_btn")->setLabel(getString("InboxLabelNoArg")); + +		fresh_new_count_view->setVisible(FALSE);  	}  	LLPanel::draw(); diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h index 61e8cf3c1f..21069a0ea1 100644 --- a/indra/newview/llpanelmarketplaceinbox.h +++ b/indra/newview/llpanelmarketplaceinbox.h @@ -36,9 +36,17 @@ class LLPanelMarketplaceInbox : public LLPanel, public LLSideTrayTabBadgeDriver  {  public: +	struct Params :	public LLInitParam::Block<Params, LLPanel::Params> +	{ +		Params() {} +	}; +  	LOG_CLASS(LLPanelMarketplaceInbox); -	LLPanelMarketplaceInbox(); +	// RN: for some reason you can't just use LLUICtrlFactory::getDefaultParams as a default argument in VC8 +	static const LLPanelMarketplaceInbox::Params& getDefaultParams(); + +	LLPanelMarketplaceInbox(const Params& p = getDefaultParams());  	~LLPanelMarketplaceInbox();  	/*virtual*/ BOOL postBuild(); @@ -47,7 +55,9 @@ public:  	/*virtual*/ void draw(); -	U32 getItemCount() const; +	U32 getFreshItemCount() const; +	U32 getTotalItemCount() const; +  	std::string getBadgeString() const;  private: diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp index 6ac845385b..33d512d89e 100644 --- a/indra/newview/llsidepanelinventory.cpp +++ b/indra/newview/llsidepanelinventory.cpp @@ -43,6 +43,7 @@  #include "lllayoutstack.h"  #include "lloutfitobserver.h"  #include "llpanelmaininventory.h" +#include "llpanelmarketplaceinbox.h"  #include "llselectmgr.h"  #include "llsidepaneliteminfo.h"  #include "llsidepaneltaskinfo.h" @@ -341,12 +342,6 @@ void LLSidepanelInventory::onToggleInboxBtn()  	{  		// Save current time as a setting for future new-ness tests  		gSavedSettings.setString(INBOX_EXPAND_TIME_SETTING, LLDate::now().asString()); - -		// TODO: Hide inbox badge -	} -	else -	{ -		// TODO: Show inbox badge  	}  } @@ -365,6 +360,14 @@ void LLSidepanelInventory::onOpen(const LLSD& key)  {  	LLFirstUse::newInventory(false); +	// Expand the inbox if we have fresh items +	LLPanelMarketplaceInbox * inbox = getChild<LLPanelMarketplaceInbox>("marketplace_inbox"); +	if (inbox && (inbox->getFreshItemCount() > 0)) +	{ +		getChild<LLButton>(INBOX_BUTTON_NAME)->setToggleState(true); +		onToggleInboxBtn(); +	} +  	if(key.size() == 0)  		return; diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml index 373a9011a1..9a91f90f79 100644 --- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml @@ -54,8 +54,8 @@                   follows="bottom|left|right"                   min_dim="35"                   name="inbox_layout_panel" -                 max_dim="125" -                 height="125"> +                 max_dim="200" +                 height="200">                   <panel                        follows="all"                        layout="topleft" @@ -64,12 +64,12 @@                        class="panel_marketplace_inbox"                        top="0"                        label="" -                      height="125" +                      height="200"                        width="330"> -                     <string name="InboxLabelWithArg">MARKETPLACE INBOX ([NUM])</string> -                     <string name="InboxLabelNoArg">MARKETPLACE INBOX</string> +                     <string name="InboxLabelWithArg">Received Items ([NUM])</string> +                     <string name="InboxLabelNoArg">Received Items</string>                       <button -                        label="MARKETPLACE INBOX" +                        label="Received Items"                          name="inbox_btn"                          height="35"                          width="308" @@ -82,28 +82,33 @@                          pad_left="35"                          top="0"                          left="10" /> +                     <text +                        type="string" +                        length="1" +                        follows="right|top" +                        layout="topleft" +                        height="13" +                        top="10" +                        right="-20" +                        name="inbox_fresh_new_count" +                        font="SansSerifMedium" +                        halign="right" +                        text_color="EmphasisColor" +                        top_pad="0" +                        width="300"> +                        [NUM] New +                     </text>                       <panel                          follows="all"                          left="10" -                        height="90" +                        bottom="200"                          width="308"                          top="35"                          bg_opaque_color="InventoryBackgroundColor"                          background_visible="true"                          background_opaque="true" -                    > -                        <text -                            type="string" -                            length="1" -                            follows="top|left|right" -                            font="SansSerifSmall" -                            use_ellipses="true" -                            name="move_items_text" -                            top="5" -                            left="4" -                            height="20" -                            width="304" -                            >Move items to your inventory to manage and use them.</text> +                        tool_tip="Drag and drop items to your inventory to manage and use them" +                        >                          <inventory_panel                              bg_opaque_color="DkGray2"                              bg_alpha_color="DkGray2" @@ -112,8 +117,8 @@                              border="false"                              bevel_style="none"                              follows="all" -                            top="25" -                            height="70" +                            top="0" +                            height="165"                              start_folder="Inbox"                              layout="topleft"                              left="0" @@ -134,8 +139,8 @@                  follows="bottom|left|right"                  name="outbox_layout_panel"                  min_dim="35" -                max_dim="125" -                height="125"> +                max_dim="200" +                height="200">                   <panel                        follows="all"                        layout="topleft" @@ -144,10 +149,10 @@                        class="panel_marketplace_outbox"                        top="0"                        label="" -                      height="125" +                      height="200"                        width="310">                       <button -                        label="MARKETPLACE OUTBOX" +                        label="Merchant Outbox"                          is_toggle="true"                          name="outbox_btn"                          follows="top|left|right" @@ -203,7 +208,7 @@                       <panel                           follows="all"                           left="0" -                         bottom="125" +                         bottom="200"                           width="330"                           top="35"                             > @@ -215,7 +220,7 @@                                border="false"                                bevel_style="none"                                follows="all" -                              height="90" +                              height="165"                                start_folder="Outbox"                                layout="topleft"                                left="0"  | 
