Display an arrow overlay on item links.

This commit is contained in:
Shyotl
2012-02-23 14:31:43 -06:00
parent 323ec8cf59
commit 5c66c70546
7 changed files with 34 additions and 5 deletions

View File

@@ -72,6 +72,7 @@ void LLBuildNewViewsScheduler::buildNewViews(LLInventoryPanel* panelp, LLInvento
{ {
LLFolderViewFolder* folderp = new LLFolderViewFolder(new_listener->getDisplayName(), LLFolderViewFolder* folderp = new LLFolderViewFolder(new_listener->getDisplayName(),
new_listener->getIcon(), new_listener->getIcon(),
NULL,
panelp->getRootFolder(), panelp->getRootFolder(),
new_listener); new_listener);
@@ -94,6 +95,7 @@ void LLBuildNewViewsScheduler::buildNewViews(LLInventoryPanel* panelp, LLInvento
{ {
itemp = new LLFolderViewItem(new_listener->getDisplayName(), itemp = new LLFolderViewItem(new_listener->getDisplayName(),
new_listener->getIcon(), new_listener->getIcon(),
NULL,
new_listener->getCreationDate(), new_listener->getCreationDate(),
panelp->getRootFolder(), panelp->getRootFolder(),
new_listener); new_listener);

View File

@@ -202,7 +202,7 @@ LLFolderView::LLFolderView( const std::string& name, LLUIImagePtr root_folder_ic
#pragma warning( push ) #pragma warning( push )
#pragma warning( disable : 4355 ) // warning C4355: 'this' : used in base member initializer list #pragma warning( disable : 4355 ) // warning C4355: 'this' : used in base member initializer list
#endif #endif
LLFolderViewFolder( name, root_folder_icon, this, listener ), LLFolderViewFolder( name, root_folder_icon, NULL, this, listener ),
#if LL_WINDOWS #if LL_WINDOWS
#pragma warning( pop ) #pragma warning( pop )
#endif #endif

View File

@@ -75,6 +75,7 @@ void LLFolderViewItem::cleanupClass()
// Default constructor // Default constructor
// NOTE: Optimize this, we call it a *lot* when opening a large inventory // NOTE: Optimize this, we call it a *lot* when opening a large inventory
LLFolderViewItem::LLFolderViewItem( const std::string& name, LLUIImagePtr icon, LLFolderViewItem::LLFolderViewItem( const std::string& name, LLUIImagePtr icon,
LLUIImagePtr icon_overlay,
S32 creation_date, S32 creation_date,
LLFolderView* root, LLFolderView* root,
LLFolderViewEventListener* listener ) : LLFolderViewEventListener* listener ) :
@@ -100,6 +101,7 @@ LLFolderViewItem::LLFolderViewItem( const std::string& name, LLUIImagePtr icon,
mRoot( root ), mRoot( root ),
mCreationDate(creation_date), mCreationDate(creation_date),
mIcon(icon), mIcon(icon),
mIconOverlay(icon_overlay),
mListener(listener) mListener(listener)
{ {
sFolderViewItems.insert(this); sFolderViewItems.insert(this);
@@ -917,12 +919,22 @@ void LLFolderViewItem::draw()
mDragAndDropTarget = FALSE; mDragAndDropTarget = FALSE;
} }
const LLViewerInventoryItem *item = getInventoryItem();
const BOOL highlight_link = mIconOverlay && item && item->getIsLinkType();
//--------------------------------------------------------------------------------//
// Draw open icon
//
const S32 icon_x = mIndentation + ARROW_SIZE + TEXT_PAD; const S32 icon_x = mIndentation + ARROW_SIZE + TEXT_PAD;
if (mIcon) if (mIcon)
{ {
mIcon->draw(icon_x, getRect().getHeight() - mIcon->getHeight() - TOP_PAD + 1); mIcon->draw(icon_x, getRect().getHeight() - mIcon->getHeight() - TOP_PAD + 1);
} }
if (highlight_link)
{
mIconOverlay->draw(icon_x, getRect().getHeight() - mIcon->getHeight() - TOP_PAD + 1);
}
//--------------------------------------------------------------------------------// //--------------------------------------------------------------------------------//
// Exit if no label to draw // Exit if no label to draw
// //
@@ -1032,9 +1044,10 @@ void LLFolderViewItem::draw()
// Default constructor // Default constructor
LLFolderViewFolder::LLFolderViewFolder( const std::string& name, LLUIImagePtr icon, LLFolderViewFolder::LLFolderViewFolder( const std::string& name, LLUIImagePtr icon,
LLUIImagePtr icon_link,
LLFolderView* root, LLFolderView* root,
LLFolderViewEventListener* listener ): LLFolderViewEventListener* listener ):
LLFolderViewItem( name, icon, 0, root, listener ), // 0 = no create time LLFolderViewItem( name, icon, icon_link, 0, root, listener ), // 0 = no create time
mNumDescendantsSelected(0), mNumDescendantsSelected(0),
mIsOpen(FALSE), mIsOpen(FALSE),
mExpanderHighlighted(FALSE), mExpanderHighlighted(FALSE),

View File

@@ -125,6 +125,7 @@ protected:
std::string mLabelSuffix; std::string mLabelSuffix;
LLUIImagePtr mIcon; LLUIImagePtr mIcon;
std::string mStatusText; std::string mStatusText;
LLUIImagePtr mIconOverlay;
BOOL mHasVisibleChildren; BOOL mHasVisibleChildren;
S32 mIndentation; S32 mIndentation;
BOOL mPassedFilter; BOOL mPassedFilter;
@@ -166,7 +167,7 @@ public:
void filterFromRoot( void ); void filterFromRoot( void );
// creation_date is in UTC seconds // creation_date is in UTC seconds
LLFolderViewItem( const std::string& name, LLUIImagePtr icon, S32 creation_date, LLFolderView* root, LLFolderViewEventListener* listener ); LLFolderViewItem( const std::string& name, LLUIImagePtr icon, LLUIImagePtr icon_overlay, S32 creation_date, LLFolderView* root, LLFolderViewEventListener* listener );
virtual ~LLFolderViewItem( void ); virtual ~LLFolderViewItem( void );
// addToFolder() returns TRUE if it succeeds. FALSE otherwise // addToFolder() returns TRUE if it succeeds. FALSE otherwise
@@ -325,6 +326,7 @@ class LLFolderViewFolder : public LLFolderViewItem
{ {
protected: protected:
LLFolderViewFolder( const std::string& name, LLUIImagePtr icon, LLFolderViewFolder( const std::string& name, LLUIImagePtr icon,
LLUIImagePtr icon_link,
LLFolderView* root, LLFolderView* root,
LLFolderViewEventListener* listener ); LLFolderViewEventListener* listener );

View File

@@ -598,7 +598,14 @@ LLFolderView * LLInventoryPanel::createFolderView(LLInvFVBridge * bridge, bool u
getRect().getWidth(), getRect().getWidth(),
0); 0);
LLFolderView* ret = new LLFolderView(getName(), NULL, folder_rect, LLUUID::null, this, bridge); LLFolderView* ret = new LLFolderView(
getName(),
NULL,
folder_rect,
LLUUID::null,
this,
bridge);
ret->setAllowMultiSelect(mAllowMultiSelect); ret->setAllowMultiSelect(mAllowMultiSelect);
return ret; return ret;
} }
@@ -608,6 +615,7 @@ LLFolderViewFolder * LLInventoryPanel::createFolderViewFolder(LLInvFVBridge * br
return new LLFolderViewFolder( return new LLFolderViewFolder(
bridge->getDisplayName(), bridge->getDisplayName(),
bridge->getIcon(), bridge->getIcon(),
LLUI::getUIImage("inv_link_overlay.tga"),
mFolderRoot, mFolderRoot,
bridge); bridge);
} }
@@ -617,6 +625,7 @@ LLFolderViewItem * LLInventoryPanel::createFolderViewItem(LLInvFVBridge * bridge
return new LLFolderViewItem( return new LLFolderViewItem(
bridge->getDisplayName(), bridge->getDisplayName(),
bridge->getIcon(), bridge->getIcon(),
LLUI::getUIImage("inv_link_overlay.tga"),
bridge->getCreationDate(), bridge->getCreationDate(),
mFolderRoot, mFolderRoot,
bridge); bridge);

View File

@@ -1760,6 +1760,7 @@ void LLPanelObjectInventory::createFolderViews(LLInventoryObject* inventory_root
LLFolderViewFolder* new_folder = NULL; LLFolderViewFolder* new_folder = NULL;
new_folder = new LLFolderViewFolder(inventory_root->getName(), new_folder = new LLFolderViewFolder(inventory_root->getName(),
bridge->getIcon(), bridge->getIcon(),
NULL,
mFolders, mFolders,
bridge); bridge);
new_folder->addToFolder(mFolders, mFolders); new_folder->addToFolder(mFolders, mFolders);
@@ -1797,6 +1798,7 @@ void LLPanelObjectInventory::createViewsForCategory(LLInventoryObject::object_li
{ {
view = new LLFolderViewFolder(obj->getName(), view = new LLFolderViewFolder(obj->getName(),
bridge->getIcon(), bridge->getIcon(),
NULL,
mFolders, mFolders,
bridge); bridge);
child_categories.put(new obj_folder_pair(obj, child_categories.put(new obj_folder_pair(obj,
@@ -1806,6 +1808,7 @@ void LLPanelObjectInventory::createViewsForCategory(LLInventoryObject::object_li
{ {
view = new LLFolderViewItem(obj->getName(), view = new LLFolderViewItem(obj->getName(),
bridge->getIcon(), bridge->getIcon(),
NULL,
bridge->getCreationDate(), bridge->getCreationDate(),
mFolders, mFolders,
bridge); bridge);