diff options
| -rw-r--r-- | indra/newview/llinventorybridge.cpp | 18 | ||||
| -rw-r--r-- | indra/newview/llinventorybridge.h | 3 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.cpp | 50 | ||||
| -rw-r--r-- | indra/newview/llinventorypanel.h | 2 | ||||
| -rw-r--r-- | indra/newview/llpanelmaininventory.cpp | 10 | ||||
| -rw-r--r-- | indra/newview/llpanelmaininventory.h | 6 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/panel_main_inventory.xml | 9 | 
7 files changed, 90 insertions, 8 deletions
| diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 4d1a6451e5..77c77023b1 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2213,8 +2213,22 @@ std::string LLFolderBridge::getLabelSuffix() const      {          return llformat(" ( %s ) ", LLTrans::getString("LoadingData").c_str());      } -     -    return LLInvFVBridge::getLabelSuffix(); +    std::string suffix = ""; +    if(mShowDescendantsCount) +    { +        LLInventoryModel::cat_array_t cat_array; +        LLInventoryModel::item_array_t item_array; +        gInventory.collectDescendents(getUUID(), cat_array, item_array, TRUE); +        S32 count = item_array.size(); +        if(count > 0) +        { +            std::ostringstream oss; +            oss << count; +            suffix = " ( " + oss.str() + " Items )"; +        } +    } + +    return LLInvFVBridge::getLabelSuffix() + suffix;  }  LLFontGL::StyleFlags LLFolderBridge::getLabelStyle() const diff --git a/indra/newview/llinventorybridge.h b/indra/newview/llinventorybridge.h index fd532c609c..8fa15c082b 100644 --- a/indra/newview/llinventorybridge.h +++ b/indra/newview/llinventorybridge.h @@ -293,6 +293,8 @@ public:  	virtual std::string getLabelSuffix() const;  	virtual LLFontGL::StyleFlags getLabelStyle() const; +	void setShowDescendantsCount(bool show_count) {mShowDescendantsCount = show_count;} +  	virtual BOOL renameItem(const std::string& new_name);  	virtual BOOL removeItem(); @@ -373,6 +375,7 @@ protected:  	bool							mCallingCards;  	bool							mWearables;  	bool							mIsLoading; +	bool							mShowDescendantsCount;  	LLTimer							mTimeSinceRequestStart;      std::string                     mMessage;  	LLRootHandle<LLFolderBridge> mHandle; diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp index 83a8678c86..2762c7af82 100644 --- a/indra/newview/llinventorypanel.cpp +++ b/indra/newview/llinventorypanel.cpp @@ -1110,6 +1110,56 @@ void LLInventoryPanel::onSelectionChange(const std::deque<LLFolderViewItem*>& it  			fv->startRenamingSelectedItem();  		}  	} + +	std::set<LLFolderViewItem*> selected_items = mFolderRoot.get()->getSelectionList(); +	LLFolderViewItem* prev_folder_item = getItemByID(mPreviousSelectedFolder); + +	if (selected_items.size() == 1) +	{ +		std::set<LLFolderViewItem*>::const_iterator iter = selected_items.begin(); +		LLFolderViewItem* folder_item = (*iter); +		if(folder_item && (folder_item != prev_folder_item)) +		{ +			LLFolderViewModelItemInventory* fve_listener = static_cast<LLFolderViewModelItemInventory*>(folder_item->getViewModelItem()); +			if (fve_listener && (fve_listener->getInventoryType() == LLInventoryType::IT_CATEGORY)) +			{ +				if(prev_folder_item) +				{ +					LLFolderBridge* prev_bridge = (LLFolderBridge*)prev_folder_item->getViewModelItem(); +					if(prev_bridge) +					{ +						prev_bridge->clearDisplayName(); +						prev_bridge->setShowDescendantsCount(false); +						prev_folder_item->refresh(); +					} +				} + +				LLFolderBridge* bridge = (LLFolderBridge*)folder_item->getViewModelItem(); +				if(bridge) +				{ +					bridge->clearDisplayName(); +					bridge->setShowDescendantsCount(true); +					folder_item->refresh(); +					mPreviousSelectedFolder = bridge->getUUID(); +				} +			} +		} +	} +	else +	{ +		if(prev_folder_item) +		{ +			LLFolderBridge* prev_bridge = (LLFolderBridge*)prev_folder_item->getViewModelItem(); +			if(prev_bridge) +			{ +				prev_bridge->clearDisplayName(); +				prev_bridge->setShowDescendantsCount(false); +				prev_folder_item->refresh(); +			} +		} +		mPreviousSelectedFolder = LLUUID(); +	} +  }  void LLInventoryPanel::doCreate(const LLSD& userdata) diff --git a/indra/newview/llinventorypanel.h b/indra/newview/llinventorypanel.h index ace0ea7f42..3829fb734d 100644 --- a/indra/newview/llinventorypanel.h +++ b/indra/newview/llinventorypanel.h @@ -258,6 +258,8 @@ protected:  	LLHandle<LLFolderView>      mFolderRoot;  	LLScrollContainer*			mScroller; +	LLUUID						mPreviousSelectedFolder; +  	LLFolderViewModelInventory	mInventoryViewModel;      LLPointer<LLFolderViewGroupedItemBridge> mGroupedItemBridge;  	Params						mParams;	// stored copy of parameter block diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp index b004226bd5..db9d61c637 100644 --- a/indra/newview/llpanelmaininventory.cpp +++ b/indra/newview/llpanelmaininventory.cpp @@ -708,8 +708,17 @@ void LLPanelMainInventory::updateItemcountText()  		LLResMgr::getInstance()->getIntegerString(mItemCountString, mItemCount);  	} +	if(mCategoryCount != gInventory.getCategoryCount()) +	{ +		mCategoryCount = gInventory.getCategoryCount(); +		mCategoryCountString = ""; +		LLLocale locale(LLLocale::USER_LOCALE); +		LLResMgr::getInstance()->getIntegerString(mCategoryCountString, mCategoryCount); +	} +  	LLStringUtil::format_map_t string_args;  	string_args["[ITEM_COUNT]"] = mItemCountString; +	string_args["[CATEGORY_COUNT]"] = mCategoryCountString;  	string_args["[FILTER]"] = getFilterText();  	std::string text = ""; @@ -728,6 +737,7 @@ void LLPanelMainInventory::updateItemcountText()  	}      mCounterCtrl->setValue(text); +    mCounterCtrl->setToolTip(text);  }  void LLPanelMainInventory::onFocusReceived() diff --git a/indra/newview/llpanelmaininventory.h b/indra/newview/llpanelmaininventory.h index 2904d5de76..732a3b04e3 100644 --- a/indra/newview/llpanelmaininventory.h +++ b/indra/newview/llpanelmaininventory.h @@ -132,7 +132,7 @@ private:  	LLFilterEditor*				mFilterEditor;  	LLTabContainer*				mFilterTabs; -    LLUICtrl*                   mCounterCtrl; +	LLUICtrl*					mCounterCtrl;  	LLHandle<LLFloater>			mFinderHandle;  	LLInventoryPanel*			mActivePanel;  	LLInventoryPanel*			mWornItemsPanel; @@ -141,7 +141,9 @@ private:  	std::string					mFilterText;  	std::string					mFilterSubString;  	S32							mItemCount; -	std::string 				mItemCountString; +	std::string					mItemCountString; +	S32							mCategoryCount; +	std::string					mCategoryCountString;  	LLComboBox*					mSearchTypeCombo; diff --git a/indra/newview/skins/default/xui/en/panel_main_inventory.xml b/indra/newview/skins/default/xui/en/panel_main_inventory.xml index df70398599..d77fbdec0a 100644 --- a/indra/newview/skins/default/xui/en/panel_main_inventory.xml +++ b/indra/newview/skins/default/xui/en/panel_main_inventory.xml @@ -13,26 +13,27 @@    </panel.string>    <panel.string     name="ItemcountFetching"> -    Fetching [ITEM_COUNT] Items... [FILTER] +    Fetching [ITEM_COUNT] Items and [CATEGORY_COUNT] Folders... [FILTER]    </panel.string>    <panel.string     name="ItemcountCompleted"> -    [ITEM_COUNT] Items [FILTER] +    [ITEM_COUNT] Items and [CATEGORY_COUNT] Folders [FILTER]    </panel.string>    <panel.string     name="ItemcountUnknown"> -    Fetched [ITEM_COUNT] Items [FILTER] +    Fetched [ITEM_COUNT] Items and [CATEGORY_COUNT] Folders [FILTER]    </panel.string>    <text  		     type="string"  		     length="1" -		     follows="left|top" +		     follows="left|top|right"  		     height="13"  		     layout="topleft"      		 left="12"  		     name="ItemcountText"  		     font="SansSerifMedium"  		     text_color="EmphasisColor" +		     use_ellipses="true"  		     top_pad="0"  		     width="300">      Items: | 
