SL-19134 Item Profile redesign #4
parent
c97de5ac48
commit
97d58e6184
|
|
@ -31,11 +31,13 @@
|
|||
|
||||
#include "llagent.h"
|
||||
#include "llavataractions.h"
|
||||
#include "llavatarnamecache.h"
|
||||
#include "llbutton.h"
|
||||
#include "llcallbacklist.h"
|
||||
#include "llcombobox.h"
|
||||
#include "llfloater.h"
|
||||
#include "llgroupactions.h"
|
||||
#include "llgroupmgr.h"
|
||||
#include "llinventorydefines.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "llinventoryobserver.h"
|
||||
|
|
@ -134,19 +136,27 @@ LLSidepanelItemInfo::~LLSidepanelItemInfo()
|
|||
gIdleCallbacks.deleteFunction(&LLSidepanelItemInfo::onIdle, (void*)this);
|
||||
|
||||
stopObjectInventoryObserver();
|
||||
|
||||
if (mOwnerCacheConnection.connected())
|
||||
{
|
||||
mOwnerCacheConnection.disconnect();
|
||||
}
|
||||
if (mCreatorCacheConnection.connected())
|
||||
{
|
||||
mCreatorCacheConnection.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
// virtual
|
||||
BOOL LLSidepanelItemInfo::postBuild()
|
||||
{
|
||||
mLabelOwnerName = getChild<LLTextBox>("LabelOwnerName");
|
||||
mLabelCreatorName = getChild<LLTextBox>("LabelCreatorName");
|
||||
|
||||
getChild<LLLineEditor>("LabelItemName")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
|
||||
getChild<LLUICtrl>("LabelItemName")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onCommitName,this));
|
||||
getChild<LLLineEditor>("LabelItemDesc")->setPrevalidate(&LLTextValidate::validateASCIIPrintableNoPipe);
|
||||
getChild<LLUICtrl>("LabelItemDesc")->setCommitCallback(boost::bind(&LLSidepanelItemInfo:: onCommitDescription, this));
|
||||
// Creator information
|
||||
getChild<LLUICtrl>("BtnCreator")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickCreator,this));
|
||||
// owner information
|
||||
getChild<LLUICtrl>("BtnOwner")->setCommitCallback(boost::bind(&LLSidepanelItemInfo::onClickOwner,this));
|
||||
// acquired date
|
||||
// owner permissions
|
||||
// Permissions debug text
|
||||
|
|
@ -229,18 +239,6 @@ void LLSidepanelItemInfo::refresh()
|
|||
refreshFromItem(item);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!item)
|
||||
{
|
||||
const std::string no_edit_mode_names[]={
|
||||
"BtnCreator",
|
||||
"BtnOwner",
|
||||
};
|
||||
for(size_t t=0; t<LL_ARRAY_SIZE(no_edit_mode_names); ++t)
|
||||
{
|
||||
getChildView(no_edit_mode_names[t])->setEnabled(false);
|
||||
}
|
||||
}
|
||||
|
||||
if (mParentFloater)
|
||||
{
|
||||
|
|
@ -319,6 +317,17 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
|
|||
getChildView("IconLocked")->setVisible(!is_modifiable);
|
||||
getChild<LLUICtrl>("LabelItemDesc")->setValue(item->getDescription());
|
||||
getChild<LLUICtrl>("item_thumbnail")->setValue(item->getThumbnailUUID());
|
||||
|
||||
// Style for creator and owner links
|
||||
LLStyle::Params style_params;
|
||||
LLColor4 link_color = LLUIColorTable::instance().getColor("HTMLLinkColor");
|
||||
style_params.color = link_color;
|
||||
style_params.readonly_color = link_color;
|
||||
style_params.is_link = true; // link will be added later
|
||||
const LLFontGL* fontp = mLabelCreatorName->getFont();
|
||||
style_params.font.name = LLFontGL::nameFromFont(fontp);
|
||||
style_params.font.size = LLFontGL::sizeFromFont(fontp);
|
||||
style_params.font.style = "UNDERLINE";
|
||||
|
||||
//////////////////
|
||||
// CREATOR NAME //
|
||||
|
|
@ -329,19 +338,34 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
|
|||
if (item->getCreatorUUID().notNull())
|
||||
{
|
||||
LLUUID creator_id = item->getCreatorUUID();
|
||||
std::string name =
|
||||
LLSLURL("agent", creator_id, "completename").getSLURLString();
|
||||
getChildView("BtnCreator")->setEnabled(TRUE);
|
||||
std::string slurl =
|
||||
LLSLURL("agent", creator_id, "inspect").getSLURLString();
|
||||
|
||||
style_params.link_href = slurl;
|
||||
|
||||
LLAvatarName av_name;
|
||||
if (LLAvatarNameCache::get(creator_id, &av_name))
|
||||
{
|
||||
updateCreatorName(creator_id, av_name, style_params);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mCreatorCacheConnection.connected())
|
||||
{
|
||||
mCreatorCacheConnection.disconnect();
|
||||
}
|
||||
mLabelCreatorName->setText(LLTrans::getString("None"));
|
||||
mCreatorCacheConnection = LLAvatarNameCache::get(creator_id, boost::bind(&LLSidepanelItemInfo::updateCreatorName, this, _1, _2, style_params));
|
||||
}
|
||||
|
||||
getChildView("LabelCreatorTitle")->setEnabled(TRUE);
|
||||
getChildView("LabelCreatorName")->setEnabled(FALSE);
|
||||
getChild<LLUICtrl>("LabelCreatorName")->setValue(name);
|
||||
mLabelCreatorName->setEnabled(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
getChildView("BtnCreator")->setEnabled(FALSE);
|
||||
getChildView("LabelCreatorTitle")->setEnabled(FALSE);
|
||||
getChildView("LabelCreatorName")->setEnabled(FALSE);
|
||||
getChild<LLUICtrl>("LabelCreatorName")->setValue(getString("unknown_multiple"));
|
||||
mLabelCreatorName->setEnabled(FALSE);
|
||||
mLabelCreatorName->setValue(getString("unknown_multiple"));
|
||||
}
|
||||
|
||||
////////////////
|
||||
|
|
@ -349,27 +373,56 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
|
|||
////////////////
|
||||
if(perm.isOwned())
|
||||
{
|
||||
std::string name;
|
||||
std::string slurl;
|
||||
if (perm.isGroupOwned())
|
||||
{
|
||||
gCacheName->getGroupName(perm.getGroup(), name);
|
||||
LLGroupMgrGroupData* group_data = LLGroupMgr::getInstance()->getGroupData(perm.getGroup());
|
||||
|
||||
slurl = LLSLURL("group", perm.getGroup(), "inspect").getSLURLString();
|
||||
style_params.link_href = slurl;
|
||||
if (group_data && group_data->isGroupPropertiesDataComplete())
|
||||
{
|
||||
mLabelOwnerName->setText(group_data->mName, style_params);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Triggers refresh
|
||||
LLGroupMgr::getInstance()->sendGroupPropertiesRequest(perm.getGroup());
|
||||
|
||||
std::string name;
|
||||
gCacheName->getGroupName(perm.getGroup(), name);
|
||||
mLabelOwnerName->setText(name, style_params);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
LLUUID owner_id = perm.getOwner();
|
||||
name = LLSLURL("agent", owner_id, "completename").getSLURLString();
|
||||
slurl = LLSLURL("agent", owner_id, "inspect").getSLURLString();
|
||||
|
||||
style_params.link_href = slurl;
|
||||
LLAvatarName av_name;
|
||||
if (LLAvatarNameCache::get(owner_id, &av_name))
|
||||
{
|
||||
updateOwnerName(owner_id, av_name, style_params);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mOwnerCacheConnection.connected())
|
||||
{
|
||||
mOwnerCacheConnection.disconnect();
|
||||
}
|
||||
mLabelOwnerName->setText(LLTrans::getString("None"));
|
||||
mOwnerCacheConnection = LLAvatarNameCache::get(owner_id, boost::bind(&LLSidepanelItemInfo::updateOwnerName, this, _1, _2, style_params));
|
||||
}
|
||||
}
|
||||
getChildView("BtnOwner")->setEnabled(TRUE);
|
||||
getChildView("LabelOwnerTitle")->setEnabled(TRUE);
|
||||
getChildView("LabelOwnerName")->setEnabled(FALSE);
|
||||
getChild<LLUICtrl>("LabelOwnerName")->setValue(name);
|
||||
mLabelOwnerName->setEnabled(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
getChildView("BtnOwner")->setEnabled(FALSE);
|
||||
getChildView("LabelOwnerTitle")->setEnabled(FALSE);
|
||||
getChildView("LabelOwnerName")->setEnabled(FALSE);
|
||||
getChild<LLUICtrl>("LabelOwnerName")->setValue(getString("public"));
|
||||
mLabelOwnerName->setEnabled(FALSE);
|
||||
mLabelOwnerName->setValue(getString("public"));
|
||||
}
|
||||
|
||||
////////////
|
||||
|
|
@ -480,6 +533,8 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
|
|||
|
||||
if( gSavedSettings.getBOOL("DebugPermissions") )
|
||||
{
|
||||
childSetVisible("layout_debug_permissions", true);
|
||||
|
||||
BOOL slam_perm = FALSE;
|
||||
BOOL overwrite_group = FALSE;
|
||||
BOOL overwrite_everyone = FALSE;
|
||||
|
|
@ -497,38 +552,29 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
|
|||
perm_string = "B: ";
|
||||
perm_string += mask_to_string(base_mask);
|
||||
getChild<LLUICtrl>("BaseMaskDebug")->setValue(perm_string);
|
||||
getChildView("BaseMaskDebug")->setVisible(TRUE);
|
||||
|
||||
perm_string = "O: ";
|
||||
perm_string += mask_to_string(owner_mask);
|
||||
getChild<LLUICtrl>("OwnerMaskDebug")->setValue(perm_string);
|
||||
getChildView("OwnerMaskDebug")->setVisible(TRUE);
|
||||
|
||||
perm_string = "G";
|
||||
perm_string += overwrite_group ? "*: " : ": ";
|
||||
perm_string += mask_to_string(group_mask);
|
||||
getChild<LLUICtrl>("GroupMaskDebug")->setValue(perm_string);
|
||||
getChildView("GroupMaskDebug")->setVisible(TRUE);
|
||||
|
||||
perm_string = "E";
|
||||
perm_string += overwrite_everyone ? "*: " : ": ";
|
||||
perm_string += mask_to_string(everyone_mask);
|
||||
getChild<LLUICtrl>("EveryoneMaskDebug")->setValue(perm_string);
|
||||
getChildView("EveryoneMaskDebug")->setVisible(TRUE);
|
||||
|
||||
perm_string = "N";
|
||||
perm_string += slam_perm ? "*: " : ": ";
|
||||
perm_string += mask_to_string(next_owner_mask);
|
||||
getChild<LLUICtrl>("NextMaskDebug")->setValue(perm_string);
|
||||
getChildView("NextMaskDebug")->setVisible(TRUE);
|
||||
}
|
||||
else
|
||||
{
|
||||
getChildView("BaseMaskDebug")->setVisible(FALSE);
|
||||
getChildView("OwnerMaskDebug")->setVisible(FALSE);
|
||||
getChildView("GroupMaskDebug")->setVisible(FALSE);
|
||||
getChildView("EveryoneMaskDebug")->setVisible(FALSE);
|
||||
getChildView("NextMaskDebug")->setVisible(FALSE);
|
||||
childSetVisible("layout_debug_permissions", false);
|
||||
}
|
||||
|
||||
/////////////
|
||||
|
|
@ -663,6 +709,26 @@ void LLSidepanelItemInfo::refreshFromItem(LLViewerInventoryItem* item)
|
|||
}
|
||||
}
|
||||
|
||||
void LLSidepanelItemInfo::updateCreatorName(const LLUUID& creator_id, const LLAvatarName& creator_name, const LLStyle::Params& style_params)
|
||||
{
|
||||
if (mCreatorCacheConnection.connected())
|
||||
{
|
||||
mCreatorCacheConnection.disconnect();
|
||||
}
|
||||
std::string name = creator_name.getCompleteName();
|
||||
mLabelCreatorName->setText(name, style_params);
|
||||
}
|
||||
|
||||
void LLSidepanelItemInfo::updateOwnerName(const LLUUID& owner_id, const LLAvatarName& owner_name, const LLStyle::Params& style_params)
|
||||
{
|
||||
if (mOwnerCacheConnection.connected())
|
||||
{
|
||||
mOwnerCacheConnection.disconnect();
|
||||
}
|
||||
std::string name = owner_name.getCompleteName();
|
||||
mLabelOwnerName->setText(name, style_params);
|
||||
}
|
||||
|
||||
void LLSidepanelItemInfo::changed(U32 mask)
|
||||
{
|
||||
const LLUUID& item_id = getItemID();
|
||||
|
|
|
|||
|
|
@ -29,12 +29,14 @@
|
|||
|
||||
#include "llinventoryobserver.h"
|
||||
#include "llpanel.h"
|
||||
#include "llstyle.h"
|
||||
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// Class LLSidepanelItemInfo
|
||||
// Object properties for inventory side panel.
|
||||
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
class LLAvatarName;
|
||||
class LLButton;
|
||||
class LLFloater;
|
||||
class LLViewerInventoryItem;
|
||||
|
|
@ -42,6 +44,7 @@ class LLItemPropertiesObserver;
|
|||
class LLObjectInventoryObserver;
|
||||
class LLViewerObject;
|
||||
class LLPermissions;
|
||||
class LLTextBox;
|
||||
|
||||
class LLSidepanelItemInfo : public LLPanel, public LLInventoryObserver
|
||||
{
|
||||
|
|
@ -66,6 +69,8 @@ public:
|
|||
void dirty();
|
||||
|
||||
static void onIdle( void* user_data );
|
||||
void updateOwnerName(const LLUUID& owner_id, const LLAvatarName& owner_name, const LLStyle::Params& style_params);
|
||||
void updateCreatorName(const LLUUID& creator_id, const LLAvatarName& creator_name, const LLStyle::Params& style_params);
|
||||
|
||||
protected:
|
||||
void refresh() override;
|
||||
|
|
@ -82,6 +87,9 @@ private:
|
|||
void startObjectInventoryObserver();
|
||||
void stopObjectInventoryObserver();
|
||||
void setPropertiesFieldsEnabled(bool enabled);
|
||||
|
||||
boost::signals2::connection mOwnerCacheConnection;
|
||||
boost::signals2::connection mCreatorCacheConnection;
|
||||
|
||||
LLUUID mItemID; // inventory UUID for the inventory item.
|
||||
LLUUID mObjectID; // in-world task UUID, or null if in agent inventory.
|
||||
|
|
@ -91,6 +99,9 @@ private:
|
|||
S32 mUpdatePendingId;
|
||||
bool mIsDirty; // item properties need to be updated
|
||||
LLFloater* mParentFloater;
|
||||
|
||||
LLTextBox* mLabelOwnerName;
|
||||
LLTextBox* mLabelCreatorName;
|
||||
|
||||
//
|
||||
// UI Elements
|
||||
|
|
|
|||
|
|
@ -134,30 +134,4 @@ Purchases from the marketplace will be delivered here.
|
|||
</layout_panel>
|
||||
</layout_stack>
|
||||
</panel>
|
||||
<panel
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
class="sidepanel_item_info"
|
||||
filename="sidepanel_item_info.xml"
|
||||
name="sidepanel__item_panel"
|
||||
top="0"
|
||||
label=""
|
||||
height="570"
|
||||
visible="false"
|
||||
width="330">
|
||||
</panel>
|
||||
<panel
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
class="sidepanel_task_info"
|
||||
filename="sidepanel_task_info.xml"
|
||||
name="sidepanel__task_panel"
|
||||
top="0"
|
||||
label=""
|
||||
height="570"
|
||||
visible="false"
|
||||
width="330">
|
||||
</panel>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -59,14 +59,14 @@
|
|||
name="layout_item_name"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
height="35">
|
||||
height="25">
|
||||
<line_editor
|
||||
border_style="line"
|
||||
border_thickness="1"
|
||||
follows="left|top|right"
|
||||
layout="topleft"
|
||||
left="5"
|
||||
top="0"
|
||||
top="1"
|
||||
right="-25"
|
||||
height="20"
|
||||
max_length_bytes="63"
|
||||
|
|
@ -80,7 +80,7 @@
|
|||
right="-5"
|
||||
mouse_opaque="true"
|
||||
name="IconLocked"
|
||||
top="2"
|
||||
top="3"
|
||||
width="18" />
|
||||
</layout_panel>
|
||||
|
||||
|
|
@ -105,7 +105,7 @@
|
|||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="23"
|
||||
height="17"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
name="LabelOwnerTitle"
|
||||
|
|
@ -115,49 +115,53 @@
|
|||
</text>
|
||||
<text
|
||||
type="string"
|
||||
follows="left|right|top"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
follows="left|right|top"
|
||||
layout="topleft"
|
||||
height="15"
|
||||
width="187"
|
||||
left_delta="0"
|
||||
top_pad="0"
|
||||
name="LabelOwnerName"
|
||||
top_pad="2"
|
||||
use_ellipses="true"
|
||||
width="165">
|
||||
translate="false">
|
||||
TestString PleaseIgnore
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="23"
|
||||
height="17"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="LabelCreatorTitle"
|
||||
top_pad="2"
|
||||
top_pad="7"
|
||||
width="78">
|
||||
Creator:
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
follows="left|right|top"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
follows="left|right|top"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
top_pad="0"
|
||||
width="187"
|
||||
height="15"
|
||||
name="LabelCreatorName"
|
||||
top_pad="2"
|
||||
use_ellipses="true"
|
||||
width="165">
|
||||
translate="false">
|
||||
TestString PleaseIgnore
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="left|top"
|
||||
height="23"
|
||||
height="17"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="LabelAcquiredTitle"
|
||||
top_pad="2"
|
||||
top_pad="7"
|
||||
width="78">
|
||||
Acquired:
|
||||
</text>
|
||||
|
|
@ -169,8 +173,8 @@
|
|||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="LabelAcquiredDate"
|
||||
top_pad="2"
|
||||
width="210">
|
||||
top_pad="0"
|
||||
width="187">
|
||||
</text>
|
||||
</layout_panel>
|
||||
|
||||
|
|
@ -179,7 +183,7 @@
|
|||
name="layout_item_description"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
height="54">
|
||||
height="61">
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
|
|
@ -213,7 +217,7 @@
|
|||
layout="topleft"
|
||||
left="5"
|
||||
name="LabelItemExperienceTitle"
|
||||
top_pad="0"
|
||||
top_pad="7"
|
||||
width="78"
|
||||
visible="true">
|
||||
Experience:
|
||||
|
|
@ -237,14 +241,14 @@
|
|||
name="layout_item_permissions_sale"
|
||||
layout="topleft"
|
||||
follows="all"
|
||||
height="300">
|
||||
height="235">
|
||||
|
||||
<view_border
|
||||
bevel_style="none"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
right="-1"
|
||||
left="5"
|
||||
right="-6"
|
||||
name="cost_text_border"
|
||||
top="1"/>
|
||||
|
||||
|
|
@ -252,9 +256,9 @@
|
|||
type="string"
|
||||
length="1"
|
||||
left="10"
|
||||
top_pad="5"
|
||||
top_pad="7"
|
||||
height="15"
|
||||
follows="left|top|right"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
name="perm_modify"
|
||||
width="200">
|
||||
|
|
@ -267,7 +271,7 @@
|
|||
left="10"
|
||||
top_pad="5"
|
||||
height="15"
|
||||
follows="left|top|right"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
name="perm_modify"
|
||||
width="200">
|
||||
|
|
@ -380,10 +384,10 @@
|
|||
bevel_style="none"
|
||||
height="0"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
right="-1"
|
||||
left="5"
|
||||
right="-6"
|
||||
name="cost_text_border"
|
||||
top_pad="7"/>
|
||||
top_pad="9"/>
|
||||
|
||||
<check_box
|
||||
height="18"
|
||||
|
|
@ -391,7 +395,7 @@
|
|||
layout="topleft"
|
||||
left="20"
|
||||
name="CheckPurchase"
|
||||
top_pad="20"
|
||||
top_pad="15"
|
||||
width="100"
|
||||
tool_tip="Lets people buy this object, its content or it copy inworld for specified price." />
|
||||
<combo_box
|
||||
|
|
|
|||
|
|
@ -168,7 +168,6 @@
|
|||
translate="false"
|
||||
use_ellipses="true"
|
||||
width="225">
|
||||
TestString PleaseIgnore
|
||||
</text>
|
||||
<text
|
||||
type="string"
|
||||
|
|
|
|||
Loading…
Reference in New Issue