Merge branch 'DRTVWR-483' of https://bitbucket.org/lindenlab/viewer
# Conflicts: # indra/newview/llgrouplist.cpp # indra/newview/lllocalbitmaps.cpp # indra/newview/lllocalbitmaps.h # indra/newview/llpanelprofile.cpp # indra/newview/llpanelprofile.h # indra/newview/llviewertexturelist.cpp # indra/newview/skins/default/xui/en/floater_profile.xml # indra/newview/skins/default/xui/en/panel_edit_profile.xml # indra/newview/skins/default/xui/en/panel_profile_secondlife.xmlmaster
commit
bca1892803
|
|
@ -308,15 +308,6 @@ BOOL FSFloaterSearch::postBuild()
|
|||
mPanelClassifieds = findChild<FSPanelSearchClassifieds>("panel_ls_classifieds");
|
||||
mPanelWeb = findChild<FSPanelSearchWeb>("panel_ls_web");
|
||||
|
||||
// <KC> If skin has legacy full profile view, use it
|
||||
mPanelProfile = mPanelPeople->findChild<LLPanelProfile>("panel_profile_view");
|
||||
if (mPanelProfile)
|
||||
{
|
||||
mPanelProfile->setVisible(false);
|
||||
mPanelProfile->setEmbedded(true);
|
||||
mPanelPeople->childSetAction("people_profile_btn", boost::bind(&FSFloaterSearch::onBtnPeopleProfile, this));
|
||||
}
|
||||
|
||||
mDetailsPanel = getChild<LLPanel>("panel_ls_details");
|
||||
mDetailTitle = getChild<LLTextEditor>("title");
|
||||
mDetailDesc = getChild<LLTextEditor>("desc");
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ public:
|
|||
virtual ~LLFloaterDisplayName() { }
|
||||
/*virtual*/ BOOL postBuild();
|
||||
void onSave();
|
||||
void onReset();
|
||||
void onCancel();
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
||||
|
|
@ -102,7 +101,6 @@ void LLFloaterDisplayName::onOpen(const LLSD& key)
|
|||
|
||||
BOOL LLFloaterDisplayName::postBuild()
|
||||
{
|
||||
getChild<LLUICtrl>("reset_btn")->setCommitCallback(boost::bind(&LLFloaterDisplayName::onReset, this));
|
||||
getChild<LLUICtrl>("cancel_btn")->setCommitCallback(boost::bind(&LLFloaterDisplayName::onCancel, this));
|
||||
getChild<LLUICtrl>("save_btn")->setCommitCallback(boost::bind(&LLFloaterDisplayName::onSave, this));
|
||||
|
||||
|
|
@ -158,21 +156,6 @@ void LLFloaterDisplayName::onCancel()
|
|||
setVisible(false);
|
||||
}
|
||||
|
||||
void LLFloaterDisplayName::onReset()
|
||||
{
|
||||
if (LLAvatarNameCache::getInstance()->hasNameLookupURL())
|
||||
{
|
||||
LLViewerDisplayName::set("",boost::bind(&LLFloaterDisplayName::onCacheSetName, this, _1, _2, _3));
|
||||
}
|
||||
else
|
||||
{
|
||||
LLNotificationsUtil::add("SetDisplayNameFailedGeneric");
|
||||
}
|
||||
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
|
||||
void LLFloaterDisplayName::onSave()
|
||||
{
|
||||
std::string display_name_utf8 = getChild<LLUICtrl>("display_name_editor")->getValue().asString();
|
||||
|
|
|
|||
|
|
@ -606,10 +606,13 @@ void LLFloaterPreference::saveAvatarProperties( void )
|
|||
// "allow publish" flag, the last remaining profile setting in the viewer
|
||||
// that doesn't exist in the web profile.
|
||||
//
|
||||
|
||||
if ((LLStartUp::getStartupState() == STATE_STARTED) && mAvatarDataInitialized && (allowPublish != mAvatarProperties.allow_publish))
|
||||
{
|
||||
mAvatarProperties.allow_publish = allowPublish;
|
||||
|
||||
// TODO!!!: replace with an AgentProfile cap, once allow_publish works correctly
|
||||
// otherwise this will trim long descritions/reset profile
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesUpdate( &mAvatarProperties );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,9 +62,6 @@ BOOL LLFloaterProfile::postBuild()
|
|||
{
|
||||
mPanelProfile = findChild<LLPanelProfile>(PANEL_PROFILE_VIEW);
|
||||
|
||||
childSetAction("ok_btn", boost::bind(&LLFloaterProfile::onOKBtn, this));
|
||||
childSetAction("cancel_btn", boost::bind(&LLFloaterProfile::onCancelBtn, this));
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
@ -83,17 +80,6 @@ void LLFloaterProfile::showClassified(const LLUUID& classified_id, bool edit)
|
|||
mPanelProfile->showClassified(classified_id, edit);
|
||||
}
|
||||
|
||||
void LLFloaterProfile::onOKBtn()
|
||||
{
|
||||
mPanelProfile->apply();
|
||||
closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterProfile::onCancelBtn()
|
||||
{
|
||||
closeFloater();
|
||||
}
|
||||
|
||||
void LLFloaterProfile::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
{
|
||||
mNameCallbackConnection.disconnect();
|
||||
|
|
|
|||
|
|
@ -47,10 +47,6 @@ public:
|
|||
|
||||
void showClassified(const LLUUID& classified_id = LLUUID::null, bool edit = false);
|
||||
|
||||
protected:
|
||||
void onOKBtn();
|
||||
void onCancelBtn();
|
||||
|
||||
private:
|
||||
LLAvatarNameCache::callback_connection_t mNameCallbackConnection;
|
||||
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
|
||||
|
|
|
|||
|
|
@ -70,7 +70,35 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class LLSharedGroupComparator : public LLFlatListView::ItemComparator
|
||||
{
|
||||
public:
|
||||
LLSharedGroupComparator() {};
|
||||
|
||||
/*virtual*/ bool compare(const LLPanel* item1, const LLPanel* item2) const
|
||||
{
|
||||
const LLGroupListItem* group_item1 = static_cast<const LLGroupListItem*>(item1);
|
||||
std::string name1 = group_item1->getGroupName();
|
||||
bool item1_shared = gAgent.isInGroup(group_item1->getGroupID(), true);
|
||||
|
||||
const LLGroupListItem* group_item2 = static_cast<const LLGroupListItem*>(item2);
|
||||
std::string name2 = group_item2->getGroupName();
|
||||
bool item2_shared = gAgent.isInGroup(group_item2->getGroupID(), true);
|
||||
|
||||
if (item2_shared != item1_shared)
|
||||
{
|
||||
return item1_shared;
|
||||
}
|
||||
|
||||
LLStringUtil::toUpper(name1);
|
||||
LLStringUtil::toUpper(name2);
|
||||
|
||||
return name1 < name2;
|
||||
}
|
||||
};
|
||||
|
||||
static LLGroupComparator GROUP_COMPARATOR;
|
||||
static LLSharedGroupComparator SHARED_GROUP_COMPARATOR;
|
||||
|
||||
LLGroupList::Params::Params()
|
||||
: for_agent("for_agent", true)
|
||||
|
|
@ -87,7 +115,15 @@ LLGroupList::LLGroupList(const Params& p)
|
|||
setCommitOnSelectionChange(true);
|
||||
|
||||
// Set default sort order.
|
||||
setComparator(&GROUP_COMPARATOR);
|
||||
if (mForAgent)
|
||||
{
|
||||
setComparator(&GROUP_COMPARATOR);
|
||||
}
|
||||
else
|
||||
{
|
||||
// shared groups first
|
||||
setComparator(&SHARED_GROUP_COMPARATOR);
|
||||
}
|
||||
|
||||
if (mForAgent)
|
||||
{
|
||||
|
|
@ -265,7 +301,7 @@ void LLGroupList::setGroups(const std::map< std::string,LLUUID> group_list)
|
|||
|
||||
void LLGroupList::addNewItem(const LLUUID& id, const std::string& name, const LLUUID& icon_id, EAddPosition pos, bool visible_in_profile)
|
||||
{
|
||||
LLGroupListItem* item = new LLGroupListItem(mForAgent && mShowIcons);
|
||||
LLGroupListItem* item = new LLGroupListItem(mForAgent, mShowIcons);
|
||||
|
||||
item->setGroupID(id);
|
||||
item->setName(name, mNameFilter);
|
||||
|
|
@ -380,14 +416,15 @@ bool LLGroupList::onContextMenuItemEnable(const LLSD& userdata)
|
|||
/* LLGroupListItem implementation */
|
||||
/************************************************************************/
|
||||
|
||||
LLGroupListItem::LLGroupListItem(bool for_agent)
|
||||
LLGroupListItem::LLGroupListItem(bool for_agent, bool show_icons)
|
||||
: LLPanel(),
|
||||
mGroupIcon(NULL),
|
||||
mGroupNameBox(NULL),
|
||||
mInfoBtn(NULL),
|
||||
mGroupID(LLUUID::null)
|
||||
mGroupID(LLUUID::null),
|
||||
mForAgent(for_agent)
|
||||
{
|
||||
if (for_agent)
|
||||
if (show_icons)
|
||||
{
|
||||
buildFromFile( "panel_group_list_item.xml");
|
||||
}
|
||||
|
|
@ -465,7 +502,17 @@ void LLGroupListItem::setGroupID(const LLUUID& group_id)
|
|||
|
||||
mID = group_id;
|
||||
mGroupID = group_id;
|
||||
setActive(group_id == gAgent.getGroupID());
|
||||
|
||||
if (mForAgent)
|
||||
{
|
||||
// Active group should be bold.
|
||||
setBold(group_id == gAgent.getGroupID());
|
||||
}
|
||||
else
|
||||
{
|
||||
// Groups shared with the agent should be bold
|
||||
setBold(gAgent.isInGroup(group_id, true));
|
||||
}
|
||||
|
||||
LLGroupMgr::getInstance()->addObserver(this);
|
||||
}
|
||||
|
|
@ -498,17 +545,16 @@ void LLGroupListItem::setVisibleInProfile(bool visible)
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
// Private Section
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
void LLGroupListItem::setActive(bool active)
|
||||
void LLGroupListItem::setBold(bool bold)
|
||||
{
|
||||
// *BUG: setName() overrides the style params.
|
||||
|
||||
// Active group should be bold.
|
||||
LLFontDescriptor new_desc(mGroupNameBox->getFont()->getFontDesc());
|
||||
|
||||
// *NOTE dzaporozhan
|
||||
// On Windows LLFontGL::NORMAL will not remove LLFontGL::BOLD if font
|
||||
// is predefined as bold (SansSerifSmallBold, for example)
|
||||
new_desc.setStyle(active ? LLFontGL::BOLD : LLFontGL::NORMAL);
|
||||
new_desc.setStyle(bold ? LLFontGL::BOLD : LLFontGL::NORMAL);
|
||||
LLFontGL* new_font = LLFontGL::getFont(new_desc);
|
||||
mGroupNameStyle.font = new_font;
|
||||
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ class LLGroupListItem : public LLPanel
|
|||
, public LLGroupMgrObserver
|
||||
{
|
||||
public:
|
||||
LLGroupListItem(bool for_agent);
|
||||
LLGroupListItem(bool for_agent, bool show_icons);
|
||||
~LLGroupListItem();
|
||||
/*virtual*/ BOOL postBuild();
|
||||
/*virtual*/ void setValue(const LLSD& value);
|
||||
|
|
@ -120,7 +120,7 @@ public:
|
|||
|
||||
void setVisibleInProfile(bool visible);
|
||||
private:
|
||||
void setActive(bool active);
|
||||
void setBold(bool bold);
|
||||
void onInfoBtnClick();
|
||||
void onProfileBtnClick();
|
||||
|
||||
|
|
@ -130,6 +130,7 @@ private:
|
|||
LLButton* mInfoBtn;
|
||||
|
||||
std::string mGroupName;
|
||||
bool mForAgent;
|
||||
LLStyle::Params mGroupNameStyle;
|
||||
|
||||
static S32 sIconWidth; // icon width + padding
|
||||
|
|
|
|||
|
|
@ -931,6 +931,36 @@ LLLocalBitmapMgr::~LLLocalBitmapMgr()
|
|||
mBitmapsAddedSignal.disconnect_all_slots(); // <FS:Ansariel> Threaded filepickers
|
||||
}
|
||||
|
||||
LLUUID LLLocalBitmapMgr::addUnit(const std::string &filename)
|
||||
{
|
||||
if (!checkTextureDimensions(filename))
|
||||
{
|
||||
return LLUUID::null;
|
||||
}
|
||||
|
||||
LLLocalBitmap* unit = new LLLocalBitmap(filename);
|
||||
|
||||
if (unit->getValid())
|
||||
{
|
||||
mBitmapList.push_back(unit);
|
||||
return unit->getTrackingID();
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Attempted to add invalid or unreadable image file, attempt cancelled.\n"
|
||||
<< "Filename: " << filename << LL_ENDL;
|
||||
|
||||
LLSD notif_args;
|
||||
notif_args["FNAME"] = filename;
|
||||
LLNotificationsUtil::add("LocalBitmapsVerifyFail", notif_args);
|
||||
|
||||
delete unit;
|
||||
unit = NULL;
|
||||
}
|
||||
|
||||
return LLUUID::null;
|
||||
}
|
||||
|
||||
// <FS:Ansariel> Threaded filepickers
|
||||
//bool LLLocalBitmapMgr::addUnit()
|
||||
//{
|
||||
|
|
@ -989,34 +1019,12 @@ void LLLocalBitmapMgr::filePickerCallback(const std::vector<std::string>& filena
|
|||
bool add_successful = false;
|
||||
mTimer.stopTimer();
|
||||
|
||||
for (std::vector<std::string>::const_iterator it = filenames.begin(); it != filenames.end(); ++it)
|
||||
for (const auto& filename : filenames)
|
||||
{
|
||||
std::string filename = *it;
|
||||
|
||||
if(!checkTextureDimensions(filename))
|
||||
if (addUnit(filename).notNull())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
LLLocalBitmap* unit = new LLLocalBitmap(filename);
|
||||
|
||||
if (unit->getValid())
|
||||
{
|
||||
mBitmapList.push_back(unit);
|
||||
add_successful = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
LL_WARNS() << "Attempted to add invalid or unreadable image file, attempt cancelled.\n"
|
||||
<< "Filename: " << filename << LL_ENDL;
|
||||
|
||||
LLSD notif_args;
|
||||
notif_args["FNAME"] = filename;
|
||||
LLNotificationsUtil::add("LocalBitmapsVerifyFail", notif_args);
|
||||
|
||||
delete unit;
|
||||
unit = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
mTimer.startTimer();
|
||||
|
|
|
|||
|
|
@ -119,6 +119,7 @@ public:
|
|||
//bool addUnit();
|
||||
void addUnit();
|
||||
// </FS:Ansariel>
|
||||
LLUUID addUnit(const std::string &filename);
|
||||
void delUnit(LLUUID tracking_id);
|
||||
bool checkTextureDimensions(std::string filename);
|
||||
|
||||
|
|
|
|||
|
|
@ -69,32 +69,20 @@ static LLDefaultChildRegistry::Register<LLProfileDropTarget> r("profile_drop_tar
|
|||
LLPanelProfileTab::LLPanelProfileTab()
|
||||
: LLPanel()
|
||||
, mAvatarId(LLUUID::null)
|
||||
, mLoading(false)
|
||||
, mLoaded(false)
|
||||
, mEmbedded(false)
|
||||
, mLoadingState(PROFILE_INIT)
|
||||
, mSelfProfile(false)
|
||||
{
|
||||
}
|
||||
|
||||
LLPanelProfileTab::~LLPanelProfileTab()
|
||||
{
|
||||
if(getAvatarId().notNull())
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelProfileTab::setAvatarId(const LLUUID& avatar_id)
|
||||
{
|
||||
if (avatar_id.notNull())
|
||||
{
|
||||
if (getAvatarId().notNull())
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarId, this);
|
||||
}
|
||||
mAvatarId = avatar_id;
|
||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(), this);
|
||||
|
||||
mSelfProfile = (getAvatarId() == gAgentID);
|
||||
}
|
||||
}
|
||||
|
|
@ -107,11 +95,11 @@ void LLPanelProfileTab::onOpen(const LLSD& key)
|
|||
setApplyProgress(true);
|
||||
}
|
||||
|
||||
void LLPanelProfileTab::updateButtons()
|
||||
void LLPanelProfileTab::setLoaded()
|
||||
{
|
||||
setApplyProgress(false);
|
||||
|
||||
mLoaded = true;
|
||||
mLoadingState = PROFILE_LOADED;
|
||||
}
|
||||
|
||||
void LLPanelProfileTab::setApplyProgress(bool started)
|
||||
|
|
@ -132,3 +120,29 @@ void LLPanelProfileTab::setApplyProgress(bool started)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
LLPanelProfilePropertiesProcessorTab::LLPanelProfilePropertiesProcessorTab()
|
||||
: LLPanelProfileTab()
|
||||
{
|
||||
}
|
||||
|
||||
LLPanelProfilePropertiesProcessorTab::~LLPanelProfilePropertiesProcessorTab()
|
||||
{
|
||||
if (getAvatarId().notNull())
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this);
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelProfilePropertiesProcessorTab::setAvatarId(const LLUUID & avatar_id)
|
||||
{
|
||||
if (avatar_id.notNull())
|
||||
{
|
||||
if (getAvatarId().notNull())
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this);
|
||||
}
|
||||
LLPanelProfileTab::setAvatarId(avatar_id);
|
||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(), this);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,6 @@ protected:
|
|||
*/
|
||||
class LLPanelProfileTab
|
||||
: public LLPanel
|
||||
, public LLAvatarPropertiesObserver
|
||||
{
|
||||
public:
|
||||
|
||||
|
|
@ -105,11 +104,6 @@ public:
|
|||
*/
|
||||
virtual void onOpen(const LLSD& key);
|
||||
|
||||
/**
|
||||
* Processes data received from server.
|
||||
*/
|
||||
virtual void processProperties(void* data, EAvatarProcessorType type) = 0;
|
||||
|
||||
/**
|
||||
* Clears all data received from server.
|
||||
*/
|
||||
|
|
@ -117,37 +111,55 @@ public:
|
|||
|
||||
/*virtual*/ ~LLPanelProfileTab();
|
||||
|
||||
void setEmbedded(bool embedded) { mEmbedded = embedded; }
|
||||
|
||||
protected:
|
||||
|
||||
LLPanelProfileTab();
|
||||
|
||||
enum ELoadingState
|
||||
{
|
||||
PROFILE_INIT,
|
||||
PROFILE_LOADING,
|
||||
PROFILE_LOADED,
|
||||
};
|
||||
|
||||
|
||||
// mLoading: false: Initial state, can request
|
||||
// true: Data requested, skip duplicate requests (happens due to LLUI's habit of repeated callbacks)
|
||||
// mLoaded: false: Initial state, show loading indicator
|
||||
// true: Data recieved, which comes in a single message, hide indicator
|
||||
bool getIsLoading() { return mLoading; }
|
||||
void setIsLoading() { mLoading = true; }
|
||||
bool getIsLoaded() { return mLoaded; }
|
||||
void resetLoading() { mLoading = false; mLoaded = false; }
|
||||
ELoadingState getLoadingState() { return mLoadingState; }
|
||||
void setIsLoading() { mLoadingState = PROFILE_LOADING; }
|
||||
virtual void setLoaded();
|
||||
void resetLoading() { mLoadingState = PROFILE_INIT; }
|
||||
|
||||
const bool getEmbedded() const { return mEmbedded; }
|
||||
bool getStarted() { return mLoadingState != PROFILE_INIT; }
|
||||
bool getIsLoaded() { return mLoadingState == PROFILE_LOADED; }
|
||||
|
||||
const bool getSelfProfile() const { return mSelfProfile; }
|
||||
|
||||
void setApplyProgress(bool started);
|
||||
|
||||
virtual void updateButtons();
|
||||
|
||||
private:
|
||||
|
||||
LLUUID mAvatarId;
|
||||
bool mLoading;
|
||||
bool mLoaded;
|
||||
bool mEmbedded;
|
||||
ELoadingState mLoadingState;
|
||||
bool mSelfProfile;
|
||||
};
|
||||
|
||||
class LLPanelProfilePropertiesProcessorTab
|
||||
: public LLPanelProfileTab
|
||||
, public LLAvatarPropertiesObserver
|
||||
{
|
||||
public:
|
||||
LLPanelProfilePropertiesProcessorTab();
|
||||
~LLPanelProfilePropertiesProcessorTab();
|
||||
|
||||
/*virtual*/ void setAvatarId(const LLUUID& avatar_id);
|
||||
|
||||
/**
|
||||
* Processes data received from server via LLAvatarPropertiesObserver.
|
||||
*/
|
||||
virtual void processProperties(void* data, EAvatarProcessorType type) = 0;
|
||||
};
|
||||
|
||||
#endif // LL_LLPANELAVATAR_H
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -41,13 +41,15 @@
|
|||
|
||||
// class LLPanelProfileSecondLife;
|
||||
// class LLPanelProfileWeb;
|
||||
// class LLPanelProfileInterests;
|
||||
// class LLPanelProfilePicks;
|
||||
// class LLPanelProfileFirstLife;
|
||||
// class LLPanelProfileNotes;
|
||||
|
||||
class LLAvatarName;
|
||||
class LLButton;
|
||||
class LLCheckBoxCtrl;
|
||||
class LLComboBox;
|
||||
class LLIconCtrl;
|
||||
class LLTabContainer;
|
||||
class LLTextBox;
|
||||
class LLTextureCtrl;
|
||||
|
|
@ -61,6 +63,7 @@ class LLPanelProfileClassifieds;
|
|||
class LLPanelProfilePicks;
|
||||
class LLViewerFetchedTexture;
|
||||
|
||||
|
||||
/**
|
||||
* Panel for displaying Avatar's second life related info.
|
||||
*/
|
||||
|
|
@ -75,11 +78,6 @@ public:
|
|||
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
||||
/**
|
||||
* Saves changes.
|
||||
*/
|
||||
void apply(LLAvatarData* data);
|
||||
|
||||
/**
|
||||
* LLFriendObserver trigger
|
||||
*/
|
||||
|
|
@ -93,8 +91,6 @@ public:
|
|||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||
|
||||
void resetData();
|
||||
|
||||
/**
|
||||
|
|
@ -104,52 +100,38 @@ public:
|
|||
|
||||
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
|
||||
|
||||
void setProfileImageUploading(bool loading);
|
||||
void setProfileImageUploaded(const LLUUID &image_asset_id);
|
||||
|
||||
friend void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Process profile related data received from server.
|
||||
*/
|
||||
virtual void processProfileProperties(const LLAvatarData* avatar_data);
|
||||
void processProfileProperties(const LLAvatarData* avatar_data);
|
||||
|
||||
/**
|
||||
* Processes group related data received from server.
|
||||
*/
|
||||
virtual void processGroupProperties(const LLAvatarGroups* avatar_groups);
|
||||
void processGroupProperties(const LLAvatarGroups* avatar_groups);
|
||||
|
||||
/**
|
||||
* Fills common for Avatar profile and My Profile fields.
|
||||
*/
|
||||
virtual void fillCommonData(const LLAvatarData* avatar_data);
|
||||
void fillCommonData(const LLAvatarData* avatar_data);
|
||||
|
||||
/**
|
||||
* Fills partner data.
|
||||
*/
|
||||
virtual void fillPartnerData(const LLAvatarData* avatar_data);
|
||||
void fillPartnerData(const LLAvatarData* avatar_data);
|
||||
|
||||
/**
|
||||
* Fills account status.
|
||||
*/
|
||||
virtual void fillAccountStatus(const LLAvatarData* avatar_data);
|
||||
void fillAccountStatus(const LLAvatarData* avatar_data);
|
||||
|
||||
void onMapButtonClick();
|
||||
|
||||
/**
|
||||
* Opens "Pay Resident" dialog.
|
||||
*/
|
||||
void pay();
|
||||
|
||||
/**
|
||||
* Add/remove resident to/from your block list.
|
||||
* Updates button focus
|
||||
*/
|
||||
void onClickToggleBlock();
|
||||
|
||||
void onAddFriendButtonClick();
|
||||
void onIMButtonClick();
|
||||
void onTeleportButtonClick();
|
||||
|
||||
void onGroupInvite();
|
||||
void fillRightsData();
|
||||
|
||||
void onImageLoaded(BOOL success, LLViewerFetchedTexture *imagep);
|
||||
static void onImageLoaded(BOOL success,
|
||||
|
|
@ -178,45 +160,45 @@ protected:
|
|||
void processOnlineStatus(bool online);
|
||||
|
||||
private:
|
||||
/*virtual*/ void updateButtons();
|
||||
void onClickSetName();
|
||||
void onCommitTexture();
|
||||
void onCommitMenu(const LLSD& userdata);
|
||||
/*virtual*/ void setLoaded();
|
||||
void onCommitMenu(const LLSD& userdata);
|
||||
bool onEnableMenu(const LLSD& userdata);
|
||||
bool onCheckMenu(const LLSD& userdata);
|
||||
void onAvatarNameCacheSetName(const LLUUID& id, const LLAvatarName& av_name);
|
||||
|
||||
void setDescriptionText(const std::string &text);
|
||||
void onSetDescriptionDirty();
|
||||
void onShowInSearchCallback();
|
||||
void onSaveDescriptionChanges();
|
||||
void onDiscardDescriptionChanges();
|
||||
void onShowAgentPermissionsDialog();
|
||||
|
||||
private:
|
||||
typedef std::map<std::string, LLUUID> group_map_t;
|
||||
group_map_t mGroups;
|
||||
void openGroupProfile();
|
||||
|
||||
LLTextBox* mStatusText;
|
||||
LLGroupList* mGroupList;
|
||||
LLCheckBoxCtrl* mShowInSearchCheckbox;
|
||||
LLTextureCtrl* mSecondLifePic;
|
||||
LLComboBox* mShowInSearchCombo;
|
||||
LLIconCtrl* mSecondLifePic;
|
||||
LLPanel* mSecondLifePicLayout;
|
||||
LLTextBase* mDescriptionEdit;
|
||||
LLButton* mTeleportButton;
|
||||
LLButton* mShowOnMapButton;
|
||||
LLButton* mBlockButton;
|
||||
LLButton* mUnblockButton;
|
||||
LLUICtrl* mNameLabel;
|
||||
LLButton* mDisplayNameButton;
|
||||
LLButton* mAddFriendButton;
|
||||
LLButton* mGroupInviteButton;
|
||||
LLButton* mPayButton;
|
||||
LLButton* mIMButton;
|
||||
LLMenuButton* mCopyMenuButton;
|
||||
LLPanel* mGiveInvPanel;
|
||||
LLTextEditor* mDescriptionEdit;
|
||||
LLMenuButton* mAgentActionMenuButton;
|
||||
LLButton* mSaveDescriptionChanges;
|
||||
LLButton* mDiscardDescriptionChanges;
|
||||
LLButton* mSeeOnlineToggle;
|
||||
LLButton* mSeeOnMapToggle;
|
||||
LLButton* mEditObjectsToggle;
|
||||
LLMenuButton* mOverflowButton; // <FS:Ansariel> Gear button
|
||||
|
||||
LLHandle<LLFloater> mFloaterPermissionsHandle;
|
||||
|
||||
bool mVoiceStatus;
|
||||
bool mWaitingForImageUpload;
|
||||
bool mAllowPublish;
|
||||
std::string mDescriptionText;
|
||||
|
||||
boost::signals2::connection mAvatarNameCacheConnection;
|
||||
|
||||
// <FS:Ansariel> RLVa support
|
||||
boost::signals2::connection mRlvBehaviorCallbackConnection;
|
||||
void updateRlvRestrictions(ERlvBehaviour behavior);
|
||||
// </FS:Ansariel>
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -235,15 +217,8 @@ public:
|
|||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||
|
||||
void resetData();
|
||||
|
||||
/**
|
||||
* Saves changes.
|
||||
*/
|
||||
void apply(LLAvatarData* data);
|
||||
|
||||
/**
|
||||
* Loads web profile.
|
||||
*/
|
||||
|
|
@ -256,7 +231,6 @@ public:
|
|||
friend void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id);
|
||||
|
||||
protected:
|
||||
/*virtual*/ void updateButtons();
|
||||
void onCommitLoad(LLUICtrl* ctrl);
|
||||
|
||||
private:
|
||||
|
|
@ -270,41 +244,6 @@ private:
|
|||
boost::signals2::connection mAvatarNameCacheConnection;
|
||||
};
|
||||
|
||||
/**
|
||||
* Panel for displaying Avatar's interests.
|
||||
*/
|
||||
class LLPanelProfileInterests
|
||||
: public LLPanelProfileTab
|
||||
{
|
||||
public:
|
||||
LLPanelProfileInterests();
|
||||
/*virtual*/ ~LLPanelProfileInterests();
|
||||
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||
|
||||
void resetData();
|
||||
|
||||
/**
|
||||
* Saves changes.
|
||||
*/
|
||||
virtual void apply();
|
||||
|
||||
protected:
|
||||
/*virtual*/ void updateButtons();
|
||||
|
||||
private:
|
||||
LLCheckBoxCtrl* mWantChecks[8];
|
||||
LLCheckBoxCtrl* mSkillChecks[6];
|
||||
LLLineEditor* mWantToEditor;
|
||||
LLLineEditor* mSkillsEditor;
|
||||
LLLineEditor* mLanguagesEditor;
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Panel for displaying Avatar's first life related info.
|
||||
*/
|
||||
|
|
@ -319,26 +258,32 @@ public:
|
|||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||
void processProperties(const LLAvatarData* avatar_data);
|
||||
|
||||
void resetData();
|
||||
|
||||
/**
|
||||
* Saves changes.
|
||||
*/
|
||||
void apply(LLAvatarData* data);
|
||||
void setProfileImageUploading(bool loading);
|
||||
void setProfileImageUploaded(const LLUUID &image_asset_id);
|
||||
|
||||
friend void request_avatar_properties_coro(std::string cap_url, LLUUID agent_id);
|
||||
|
||||
protected:
|
||||
/*virtual*/ void updateButtons();
|
||||
void onDescriptionFocusReceived();
|
||||
/*virtual*/ void setLoaded();
|
||||
|
||||
void onChangePhoto();
|
||||
void onRemovePhoto();
|
||||
void setDescriptionText(const std::string &text);
|
||||
void onSetDescriptionDirty();
|
||||
void onSaveDescriptionChanges();
|
||||
void onDiscardDescriptionChanges();
|
||||
|
||||
LLTextEditor* mDescriptionEdit;
|
||||
LLTextureCtrl* mPicture;
|
||||
LLIconCtrl* mPicture;
|
||||
LLButton* mChangePhoto;
|
||||
LLButton* mRemovePhoto;
|
||||
LLButton* mSaveChanges;
|
||||
LLButton* mDiscardChanges;
|
||||
|
||||
bool mIsEditing;
|
||||
std::string mCurrentDescription;
|
||||
};
|
||||
|
||||
|
|
@ -347,7 +292,6 @@ protected:
|
|||
*/
|
||||
class LLPanelProfileNotes
|
||||
: public LLPanelProfileTab
|
||||
, public LLFriendObserver
|
||||
{
|
||||
public:
|
||||
LLPanelProfileNotes();
|
||||
|
|
@ -355,51 +299,28 @@ public:
|
|||
|
||||
virtual void setAvatarId(const LLUUID& avatar_id);
|
||||
|
||||
/**
|
||||
* LLFriendObserver trigger
|
||||
*/
|
||||
virtual void changed(U32 mask);
|
||||
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
||||
/*virtual*/ BOOL postBuild();
|
||||
|
||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||
void processProperties(LLAvatarNotes* avatar_notes);
|
||||
|
||||
void resetData();
|
||||
|
||||
/*virtual*/ void updateData();
|
||||
|
||||
/**
|
||||
* Saves changes.
|
||||
*/
|
||||
virtual void apply();
|
||||
|
||||
void onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* Fills rights data for friends.
|
||||
*/
|
||||
void fillRightsData();
|
||||
|
||||
void rightsConfirmationCallback(const LLSD& notification, const LLSD& response);
|
||||
void confirmModifyRights(bool grant);
|
||||
void onCommitRights();
|
||||
void onCommitNotes();
|
||||
void enableCheckboxes(bool enable);
|
||||
void setNotesText(const std::string &text);
|
||||
void onSetNotesDirty();
|
||||
void onSaveNotesChanges();
|
||||
void onDiscardNotesChanges();
|
||||
|
||||
void applyRights();
|
||||
|
||||
LLCheckBoxCtrl* mOnlineStatus;
|
||||
LLCheckBoxCtrl* mMapRights;
|
||||
LLCheckBoxCtrl* mEditObjectRights;
|
||||
LLTextEditor* mNotesEditor;
|
||||
LLButton* mSaveChanges;
|
||||
LLButton* mDiscardChanges;
|
||||
|
||||
std::string mURLWebProfile;
|
||||
|
||||
boost::signals2::connection mAvatarNameCacheConnection;
|
||||
std::string mCurrentNotes;
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -417,15 +338,8 @@ public:
|
|||
|
||||
/*virtual*/ void updateData();
|
||||
|
||||
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
|
||||
|
||||
/*virtual*/ void onOpen(const LLSD& key);
|
||||
|
||||
/**
|
||||
* Saves changes.
|
||||
*/
|
||||
void apply();
|
||||
|
||||
void showPick(const LLUUID& pick_id = LLUUID::null);
|
||||
bool isPickTabSelected();
|
||||
bool isNotesTabSelected();
|
||||
|
|
@ -443,11 +357,10 @@ private:
|
|||
|
||||
LLPanelProfileSecondLife* mPanelSecondlife;
|
||||
LLPanelProfileWeb* mPanelWeb;
|
||||
LLPanelProfileInterests* mPanelInterests;
|
||||
LLPanelProfilePicks* mPanelPicks;
|
||||
LLPanelProfileClassifieds* mPanelClassifieds;
|
||||
LLPanelProfileFirstLife* mPanelFirstlife;
|
||||
LLPanelProfileNotes* mPanelNotes;
|
||||
LLPanelProfileNotes* mPanelNotes;
|
||||
LLTabContainer* mTabContainer;
|
||||
|
||||
// Todo: due to server taking minutes to update this needs a more long term storage
|
||||
|
|
|
|||
|
|
@ -193,7 +193,7 @@ LLClassifiedHandler gClassifiedHandler;
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLPanelProfileClassifieds::LLPanelProfileClassifieds()
|
||||
: LLPanelProfileTab()
|
||||
: LLPanelProfilePropertiesProcessorTab()
|
||||
, mClassifiedToSelectOnLoad(LLUUID::null)
|
||||
, mClassifiedEditOnLoad(false)
|
||||
, mRlvBehaviorCallbackConnection() // <FS:Ansariel> RLVa support
|
||||
|
|
@ -216,7 +216,7 @@ void LLPanelProfileClassifieds::onOpen(const LLSD& key)
|
|||
|
||||
resetData();
|
||||
|
||||
if (getSelfProfile() && !getEmbedded())
|
||||
if (getSelfProfile())
|
||||
{
|
||||
mNewButton->setVisible(TRUE);
|
||||
mNewButton->setEnabled(FALSE);
|
||||
|
|
@ -386,6 +386,7 @@ void LLPanelProfileClassifieds::processProperties(void* data, EAvatarProcessorTy
|
|||
mTabContainer->selectFirstTab();
|
||||
}
|
||||
|
||||
setLoaded();
|
||||
updateButtons();
|
||||
}
|
||||
}
|
||||
|
|
@ -399,9 +400,7 @@ void LLPanelProfileClassifieds::resetData()
|
|||
|
||||
void LLPanelProfileClassifieds::updateButtons()
|
||||
{
|
||||
LLPanelProfileTab::updateButtons();
|
||||
|
||||
if (getSelfProfile() && !getEmbedded())
|
||||
if (getSelfProfile())
|
||||
{
|
||||
// <FS:Ansariel> RLVa support
|
||||
//mNewButton->setEnabled(canAddNewClassified());
|
||||
|
|
@ -415,7 +414,7 @@ void LLPanelProfileClassifieds::updateData()
|
|||
{
|
||||
// Send picks request only once
|
||||
LLUUID avatar_id = getAvatarId();
|
||||
if (!getIsLoading() && avatar_id.notNull())
|
||||
if (!getStarted() && avatar_id.notNull())
|
||||
{
|
||||
setIsLoading();
|
||||
mNoItemsLabel->setValue(LLTrans::getString("PicksClassifiedsLoadingText"));
|
||||
|
|
@ -501,7 +500,7 @@ static const S32 CB_ITEM_MATURE = 0;
|
|||
static const S32 CB_ITEM_PG = 1;
|
||||
|
||||
LLPanelProfileClassified::LLPanelProfileClassified()
|
||||
: LLPanelProfileTab()
|
||||
: LLPanelProfilePropertiesProcessorTab()
|
||||
, mInfoLoaded(false)
|
||||
, mTeleportClicksOld(0)
|
||||
, mMapClicksOld(0)
|
||||
|
|
@ -766,6 +765,7 @@ void LLPanelProfileClassified::processProperties(void* data, EAvatarProcessorTyp
|
|||
// for just created classified - in case user opened edit panel before processProperties() callback
|
||||
mSaveButton->setLabelArg("[LABEL]", getString("save_label"));
|
||||
|
||||
setLoaded();
|
||||
updateButtons();
|
||||
|
||||
if (mEditOnLoad)
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ public:
|
|||
* Panel for displaying Avatar's picks.
|
||||
*/
|
||||
class LLPanelProfileClassifieds
|
||||
: public LLPanelProfileTab
|
||||
: public LLPanelProfilePropertiesProcessorTab
|
||||
{
|
||||
public:
|
||||
LLPanelProfileClassifieds();
|
||||
|
|
@ -86,7 +86,7 @@ public:
|
|||
|
||||
/*virtual*/ void resetData();
|
||||
|
||||
/*virtual*/ void updateButtons();
|
||||
void updateButtons();
|
||||
|
||||
/*virtual*/ void updateData();
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ private:
|
|||
|
||||
|
||||
class LLPanelProfileClassified
|
||||
: public LLPanelProfileTab
|
||||
: public LLPanelProfilePropertiesProcessorTab
|
||||
{
|
||||
public:
|
||||
|
||||
|
|
@ -220,7 +220,7 @@ protected:
|
|||
|
||||
void resetControls();
|
||||
|
||||
/*virtual*/ void updateButtons();
|
||||
void updateButtons();
|
||||
void updateInfoRect();
|
||||
|
||||
static std::string createLocationText(
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ LLPickHandler gPickHandler;
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLPanelProfilePicks::LLPanelProfilePicks()
|
||||
: LLPanelProfileTab()
|
||||
: LLPanelProfilePropertiesProcessorTab()
|
||||
, mPickToSelectOnLoad(LLUUID::null)
|
||||
, mRlvBehaviorCallbackConnection() // <FS:Ansariel> FIRE-15556: Picks can circumvent RLVa @showloc restriction
|
||||
{
|
||||
|
|
@ -144,7 +144,7 @@ void LLPanelProfilePicks::onOpen(const LLSD& key)
|
|||
|
||||
resetData();
|
||||
|
||||
if (getSelfProfile() && !getEmbedded())
|
||||
if (getSelfProfile())
|
||||
{
|
||||
mNewButton->setVisible(TRUE);
|
||||
mNewButton->setEnabled(FALSE);
|
||||
|
|
@ -322,6 +322,7 @@ void LLPanelProfilePicks::processProperties(const LLAvatarPicks* avatar_picks)
|
|||
mTabContainer->selectFirstTab();
|
||||
}
|
||||
|
||||
setLoaded();
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
|
|
@ -333,9 +334,7 @@ void LLPanelProfilePicks::resetData()
|
|||
|
||||
void LLPanelProfilePicks::updateButtons()
|
||||
{
|
||||
LLPanelProfileTab::updateButtons();
|
||||
|
||||
if (getSelfProfile() && !getEmbedded())
|
||||
if (getSelfProfile())
|
||||
{
|
||||
// <FS:Ansariel> RLVa support
|
||||
//mNewButton->setEnabled(canAddNewPick());
|
||||
|
|
@ -364,7 +363,7 @@ void LLPanelProfilePicks::updateData()
|
|||
{
|
||||
// Send picks request only once
|
||||
LLUUID avatar_id = getAvatarId();
|
||||
if (!getIsLoading() && avatar_id.notNull())
|
||||
if (!getStarted() && avatar_id.notNull())
|
||||
{
|
||||
setIsLoading();
|
||||
mNoItemsLabel->setValue(LLTrans::getString("PicksClassifiedsLoadingText"));
|
||||
|
|
@ -404,7 +403,7 @@ bool LLPanelProfilePicks::canDeletePick()
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
LLPanelProfilePick::LLPanelProfilePick()
|
||||
: LLPanelProfileTab()
|
||||
: LLPanelProfilePropertiesProcessorTab()
|
||||
, LLRemoteParcelInfoObserver()
|
||||
, mSnapshotCtrl(NULL)
|
||||
, mPickId(LLUUID::null)
|
||||
|
|
@ -483,7 +482,7 @@ void LLPanelProfilePick::setAvatarId(const LLUUID& avatar_id)
|
|||
|
||||
resetDirty();
|
||||
|
||||
if (getSelfProfile() && !getEmbedded())
|
||||
if (getSelfProfile())
|
||||
{
|
||||
mPickName->setEnabled(TRUE);
|
||||
mPickDescription->setEnabled(TRUE);
|
||||
|
|
@ -551,7 +550,7 @@ void LLPanelProfilePick::processProperties(void* data, EAvatarProcessorType type
|
|||
mPickDescription->setParseHTML(true);
|
||||
mParcelId = pick_info->parcel_id;
|
||||
setSnapshotId(pick_info->snapshot_id);
|
||||
if (!getSelfProfile() || getEmbedded())
|
||||
if (!getSelfProfile())
|
||||
{
|
||||
mSnapshotCtrl->setEnabled(FALSE);
|
||||
}
|
||||
|
|
@ -568,7 +567,7 @@ void LLPanelProfilePick::processProperties(void* data, EAvatarProcessorType type
|
|||
// edit the Pick and we have to update Pick info panel.
|
||||
// revomeObserver is called from onClickBack
|
||||
|
||||
updateButtons();
|
||||
setLoaded();
|
||||
}
|
||||
|
||||
void LLPanelProfilePick::apply()
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class LLTextEditor;
|
|||
* Panel for displaying Avatar's picks.
|
||||
*/
|
||||
class LLPanelProfilePicks
|
||||
: public LLPanelProfileTab
|
||||
: public LLPanelProfilePropertiesProcessorTab
|
||||
{
|
||||
public:
|
||||
LLPanelProfilePicks();
|
||||
|
|
@ -63,7 +63,7 @@ public:
|
|||
|
||||
/*virtual*/ void resetData();
|
||||
|
||||
/*virtual*/ void updateButtons();
|
||||
void updateButtons();
|
||||
|
||||
/**
|
||||
* Saves changes.
|
||||
|
|
@ -100,7 +100,7 @@ private:
|
|||
|
||||
|
||||
class LLPanelProfilePick
|
||||
: public LLPanelProfileTab
|
||||
: public LLPanelProfilePropertiesProcessorTab
|
||||
, public LLRemoteParcelInfoObserver
|
||||
{
|
||||
public:
|
||||
|
|
|
|||
|
|
@ -3277,6 +3277,7 @@ void LLViewerRegionImpl::buildCapabilityNames(LLSD& capabilityNames)
|
|||
capabilityNames.append("UpdateScriptTask");
|
||||
capabilityNames.append("UpdateSettingsAgentInventory");
|
||||
capabilityNames.append("UpdateSettingsTaskInventory");
|
||||
capabilityNames.append("UploadAgentProfileImage");
|
||||
capabilityNames.append("UploadBakedTexture");
|
||||
capabilityNames.append("UserInfo");
|
||||
capabilityNames.append("ViewerAsset");
|
||||
|
|
|
|||
|
|
@ -1397,14 +1397,13 @@ void LLViewerTextureList::decodeAllImages(F32 max_time)
|
|||
|
||||
BOOL LLViewerTextureList::createUploadFile(const std::string& filename,
|
||||
const std::string& out_filename,
|
||||
const U8 codec)
|
||||
const U8 codec,
|
||||
const S32 max_image_dimentions)
|
||||
{
|
||||
// Load the image
|
||||
LLPointer<LLImageFormatted> image = LLImageFormatted::createFromType(codec);
|
||||
if (image.isNull())
|
||||
{
|
||||
// <FS:ND> Pointer is null!
|
||||
//image->setLastError("Couldn't open the image to be uploaded.");
|
||||
return FALSE;
|
||||
}
|
||||
if (!image->load(filename))
|
||||
|
|
@ -1426,7 +1425,7 @@ BOOL LLViewerTextureList::createUploadFile(const std::string& filename,
|
|||
return FALSE;
|
||||
}
|
||||
// Convert to j2c (JPEG2000) and save the file locally
|
||||
LLPointer<LLImageJ2C> compressedImage = convertToUploadFile(raw_image);
|
||||
LLPointer<LLImageJ2C> compressedImage = convertToUploadFile(raw_image, max_image_dimentions);
|
||||
if (compressedImage.isNull())
|
||||
{
|
||||
image->setLastError("Couldn't convert the image to jpeg2000.");
|
||||
|
|
@ -1451,9 +1450,9 @@ BOOL LLViewerTextureList::createUploadFile(const std::string& filename,
|
|||
}
|
||||
|
||||
// note: modifies the argument raw_image!!!!
|
||||
LLPointer<LLImageJ2C> LLViewerTextureList::convertToUploadFile(LLPointer<LLImageRaw> raw_image)
|
||||
LLPointer<LLImageJ2C> LLViewerTextureList::convertToUploadFile(LLPointer<LLImageRaw> raw_image, const S32 max_image_dimentions)
|
||||
{
|
||||
raw_image->biasedScaleToPowerOfTwo(LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT);
|
||||
raw_image->biasedScaleToPowerOfTwo(max_image_dimentions);
|
||||
LLPointer<LLImageJ2C> compressedImage = new LLImageJ2C();
|
||||
|
||||
if (gSavedSettings.getBOOL("LosslessJ2CUpload") &&
|
||||
|
|
|
|||
|
|
@ -93,8 +93,11 @@ class LLViewerTextureList
|
|||
friend class LLLocalBitmap;
|
||||
|
||||
public:
|
||||
static BOOL createUploadFile(const std::string& filename, const std::string& out_filename, const U8 codec);
|
||||
static LLPointer<LLImageJ2C> convertToUploadFile(LLPointer<LLImageRaw> raw_image);
|
||||
static BOOL createUploadFile(const std::string& filename,
|
||||
const std::string& out_filename,
|
||||
const U8 codec,
|
||||
const S32 max_image_dimentions = LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT);
|
||||
static LLPointer<LLImageJ2C> convertToUploadFile(LLPointer<LLImageRaw> raw_image, const S32 max_image_dimentions = LLViewerFetchedTexture::MAX_IMAGE_SIZE_DEFAULT);
|
||||
static void processImageNotInDatabase( LLMessageSystem *msg, void **user_data );
|
||||
static void receiveImageHeader(LLMessageSystem *msg, void **user_data);
|
||||
static void receiveImagePacket(LLMessageSystem *msg, void **user_data);
|
||||
|
|
|
|||
|
|
@ -83,21 +83,12 @@
|
|||
tool_tip="Save your new Display Name"
|
||||
top_pad="10"
|
||||
width="120" />
|
||||
<button
|
||||
height="23"
|
||||
label="Reset"
|
||||
layout="topleft"
|
||||
font="SansSerif"
|
||||
left_pad="5"
|
||||
name="reset_btn"
|
||||
tool_tip="Make Display Name the same as Username"
|
||||
width="120" />
|
||||
<button
|
||||
height="23"
|
||||
label="Cancel"
|
||||
font="SansSerif"
|
||||
layout="topleft"
|
||||
left_pad="5"
|
||||
left_pad="125"
|
||||
name="cancel_btn"
|
||||
width="120" />
|
||||
</floater>
|
||||
|
|
|
|||
|
|
@ -50,14 +50,6 @@
|
|||
filename="panel_profile_web.xml"
|
||||
help_topic="profile_web_tab"
|
||||
/>
|
||||
<panel
|
||||
name="panel_profile_interests"
|
||||
label="Interests"
|
||||
layout="topleft"
|
||||
class="panel_profile_interests"
|
||||
filename="panel_profile_interests.xml"
|
||||
help_topic="profile_interests_tab"
|
||||
/>
|
||||
<panel
|
||||
name="panel_profile_picks"
|
||||
label="Picks"
|
||||
|
|
@ -91,31 +83,6 @@
|
|||
help_topic="profile_notes_tab"
|
||||
/>
|
||||
</tab_container>
|
||||
<button
|
||||
name="ok_btn"
|
||||
label="OK"
|
||||
tool_tip="Save changes to profile and close"
|
||||
bottom_delta="0"
|
||||
left="10"
|
||||
height="20"
|
||||
width="90"
|
||||
follows="left|bottom"
|
||||
layout="topleft"
|
||||
visible="false"
|
||||
/>
|
||||
<button
|
||||
name="cancel_btn"
|
||||
label="Cancel"
|
||||
tool_tip="Discard unsaved changes and close"
|
||||
bottom_delta="0"
|
||||
right="-10"
|
||||
height="20"
|
||||
width="90"
|
||||
follows="right|bottom"
|
||||
layout="topleft"
|
||||
label_selected="Cancel"
|
||||
visible="false"
|
||||
/>
|
||||
</panel>
|
||||
</floater>
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<floater
|
||||
can_resize="false"
|
||||
show_title="false"
|
||||
can_minimize="false"
|
||||
can_close="false"
|
||||
header_height="10"
|
||||
bg_opaque_image="Window_NoTitle_Foreground"
|
||||
bg_alpha_image="Window_NoTitle_Background"
|
||||
height="115"
|
||||
layout="topleft"
|
||||
name="profile_permissiona"
|
||||
width="300">
|
||||
<string
|
||||
name="description_string"
|
||||
value="Allow [AGENT_NAME] to:" />
|
||||
<text
|
||||
name="perm_description"
|
||||
value="Allow agent to:"
|
||||
top="1"
|
||||
left="12"
|
||||
right="-6"
|
||||
height="16"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
font.style="BOLD"
|
||||
/>
|
||||
<check_box
|
||||
name="online_check"
|
||||
label="See when I am online"
|
||||
top_pad="5"
|
||||
left="16"
|
||||
height="16"
|
||||
width="293"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="map_check"
|
||||
label="Find me on the world map"
|
||||
top_pad="5"
|
||||
left="16"
|
||||
height="16"
|
||||
width="293"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="objects_check"
|
||||
label="Edit, delete or take my objects from my land"
|
||||
top_pad="5"
|
||||
left="16"
|
||||
height="16"
|
||||
width="293"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
/>
|
||||
<button
|
||||
name="perms_btn_ok"
|
||||
label="OK"
|
||||
top_pad="5"
|
||||
left="42"
|
||||
height="20"
|
||||
width="100"
|
||||
follows="top|left"
|
||||
layout="topleft"/>
|
||||
<button
|
||||
name="perms_btn_cancel"
|
||||
label="Cancel"
|
||||
top_delta="0"
|
||||
left_pad="12"
|
||||
height="20"
|
||||
width="100"
|
||||
follows="top|left"
|
||||
layout="topleft"/>
|
||||
</floater>
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toggleable_menu
|
||||
name="CopyMenu">
|
||||
<menu_item_call
|
||||
label="Copy Display Name"
|
||||
layout="topleft"
|
||||
name="copy_display">
|
||||
<on_click function="Profile.CopyName" parameter="display"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy Agent Name"
|
||||
layout="topleft"
|
||||
name="copy_name">
|
||||
<on_click function="Profile.CopyName" parameter="name"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy Agent Id"
|
||||
layout="topleft"
|
||||
name="copy_id">
|
||||
<on_click function="Profile.CopyName" parameter="id"/>
|
||||
</menu_item_call>
|
||||
</toggleable_menu>
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toggleable_menu
|
||||
layout="topleft"
|
||||
name="Avatar Profile Menu">
|
||||
<menu_item_call
|
||||
label="IM"
|
||||
layout="topleft"
|
||||
name="im">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="im"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Offer Teleport"
|
||||
name="offer_teleport">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="offer_teleport"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="offer_teleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Request Teleport"
|
||||
name="request_teleport">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="request_teleport"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="request_teleport"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Voice call"
|
||||
layout="topleft"
|
||||
name="voice_call">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="voice_call"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="voice_call"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator />
|
||||
<menu_item_call
|
||||
label="View chat history..."
|
||||
layout="topleft"
|
||||
name="chat_history">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="chat_history"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="chat_history"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator name="separator_chat_history"/>
|
||||
<menu_item_call
|
||||
label="Add Friend"
|
||||
layout="topleft"
|
||||
name="add_friend">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="add_friend"/>
|
||||
<menu_item_call.on_visible
|
||||
function="Profile.EnableItem"
|
||||
parameter="add_friend"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Remove Friend"
|
||||
layout="topleft"
|
||||
name="remove_friend">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="remove_friend"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="remove_friend"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Invite to group..."
|
||||
layout="topleft"
|
||||
name="invite_to_group">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="invite_to_group"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator name="separator_invite_to_group"/>
|
||||
<menu_item_call
|
||||
label="Permissions"
|
||||
layout="topleft"
|
||||
name="agent_permissions">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="agent_permissions"/>
|
||||
<menu_item_call.on_visible
|
||||
function="Profile.EnableItem"
|
||||
parameter="agent_permissions"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Map"
|
||||
layout="topleft"
|
||||
name="map">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="can_show_on_map"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="can_show_on_map"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Share"
|
||||
layout="topleft"
|
||||
name="share">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="share"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Pay"
|
||||
layout="topleft"
|
||||
name="pay">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="pay"/>
|
||||
</menu_item_call>
|
||||
<menu_item_check
|
||||
label="Block/Unblock"
|
||||
layout="topleft"
|
||||
name="block_unblock">
|
||||
<menu_item_check.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="toggle_block_agent"/>
|
||||
<menu_item_check.on_check
|
||||
function="Profile.CheckItem"
|
||||
parameter="toggle_block_agent"/>
|
||||
<menu_item_check.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="toggle_block_agent"/>
|
||||
</menu_item_check>
|
||||
<menu_item_separator name="separator_copy_options"/>
|
||||
<menu_item_call
|
||||
label="Copy Display Name"
|
||||
layout="topleft"
|
||||
name="copy_display_name">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="copy_display_name"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="copy_display_name"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy Agent Name"
|
||||
layout="topleft"
|
||||
name="copy_name">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="copy_username"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="copy_username"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy Agent Id"
|
||||
layout="topleft"
|
||||
name="copy_id">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="copy_user_id"/>
|
||||
</menu_item_call>
|
||||
</toggleable_menu>
|
||||
|
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<toggleable_menu
|
||||
layout="topleft"
|
||||
name="Avatar Profile Menu Self">
|
||||
<menu_item_call
|
||||
label="Edit Display Name"
|
||||
layout="topleft"
|
||||
name="edit_display_name">
|
||||
<on_click
|
||||
function="Profile.Commit"
|
||||
parameter="edit_display_name"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Edit Partner"
|
||||
layout="topleft"
|
||||
name="edit_partner">
|
||||
<on_click
|
||||
function="Profile.Commit"
|
||||
parameter="edit_partner"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Change Photo"
|
||||
layout="topleft"
|
||||
name="change_photo">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="change_photo"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="change_photo"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Remove Photo"
|
||||
layout="topleft"
|
||||
name="remove_photo">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="remove_photo"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="remove_photo"/>
|
||||
</menu_item_call>
|
||||
<menu_item_separator name="separator_copy_options"/>
|
||||
<menu_item_call
|
||||
label="Copy Display Name"
|
||||
layout="topleft"
|
||||
name="copy_display_name">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="copy_display_name"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="copy_display_name"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy Agent Name"
|
||||
layout="topleft"
|
||||
name="copy_name">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="copy_username"/>
|
||||
<menu_item_call.on_enable
|
||||
function="Profile.EnableItem"
|
||||
parameter="copy_username"/>
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Copy Agent Id"
|
||||
layout="topleft"
|
||||
name="copy_id">
|
||||
<menu_item_call.on_click
|
||||
function="Profile.Commit"
|
||||
parameter="copy_user_id"/>
|
||||
</menu_item_call>
|
||||
</toggleable_menu>
|
||||
|
|
@ -1,537 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
|
||||
<!-- This is the profile editing user interface for the current user -->
|
||||
|
||||
<panel
|
||||
background_visible="false"
|
||||
background_opaque="false"
|
||||
bg_alpha_color="DkGray2"
|
||||
bg_opaque_color="DkGray2"
|
||||
class="edit_profile_panel"
|
||||
follows="all"
|
||||
height="580"
|
||||
label="Profile Edit"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="edit_profile_panel"
|
||||
top="0"
|
||||
width="313">
|
||||
|
||||
<string
|
||||
name="CaptionTextAcctInfo">
|
||||
[ACCTTYPE]
|
||||
[PAYMENTINFO] [FIRESTORM][FSDEV][FSSUPP][FSQA][FSGW]
|
||||
</string>
|
||||
<!-- The previous line was [PAYMENTINFO] [AGEVERIFICATION], but they're not
|
||||
sending the latter any more. ...TS -->
|
||||
<string
|
||||
name="FSDev"
|
||||
value=" Developer" />
|
||||
<string
|
||||
name="FSSupp"
|
||||
value=" Support" />
|
||||
<string
|
||||
name="FSQualityAssurance"
|
||||
value=" Bug Hunter" />
|
||||
<string
|
||||
name="FSGW"
|
||||
value=" Gateway" />
|
||||
<string
|
||||
name="RegisterDateFormat">
|
||||
[REG_DATE] ([AGE])
|
||||
</string>
|
||||
<string
|
||||
name="name_text_args">
|
||||
[NAME]
|
||||
</string>
|
||||
<string
|
||||
name="display_name_text_args">
|
||||
[DISPLAY_NAME]
|
||||
</string>
|
||||
<string
|
||||
name="AcctTypeResident"
|
||||
value="Resident" />
|
||||
<string
|
||||
name="AcctTypeTrial"
|
||||
value="Trial" />
|
||||
<string
|
||||
name="AcctTypeCharterMember"
|
||||
value="Charter Member" />
|
||||
<string
|
||||
name="AcctTypeEmployee"
|
||||
value="Linden Lab Employee" />
|
||||
<string
|
||||
name="PaymentInfoUsed"
|
||||
value="Payment Info Used" />
|
||||
<string
|
||||
name="PaymentInfoOnFile"
|
||||
value="Payment Info On File" />
|
||||
<string
|
||||
name="NoPaymentInfoOnFile"
|
||||
value="No Payment Info On File" />
|
||||
<string
|
||||
name="AgeVerified"
|
||||
value="Age-verified" />
|
||||
<string
|
||||
name="NotAgeVerified"
|
||||
value="Not Age-verified" />
|
||||
<string
|
||||
name="partner_edit_link_url">
|
||||
http://www.secondlife.com/account/partners.php?lang=en
|
||||
</string>
|
||||
<string
|
||||
name="my_account_link_url">
|
||||
http://secondlife.com/my
|
||||
</string>
|
||||
<string
|
||||
name="no_partner_text"
|
||||
value="None" />
|
||||
|
||||
<tab_container
|
||||
left="0"
|
||||
top="4"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
name="profile_accordion"
|
||||
height="544"
|
||||
width="313">
|
||||
|
||||
<panel
|
||||
name="sl_data_panel"
|
||||
top="0"
|
||||
left="0"
|
||||
width="313"
|
||||
height="527"
|
||||
title="Avatar"
|
||||
follows="all"
|
||||
layout="topleft">
|
||||
|
||||
<text
|
||||
top="4"
|
||||
follows="top|left|right"
|
||||
height="13"
|
||||
layout="topleft"
|
||||
left="4"
|
||||
name="display_name_label"
|
||||
text_color="LtGray"
|
||||
value="Display Name:"
|
||||
right="-4" />
|
||||
|
||||
<text
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
follows="top|left|right"
|
||||
height="13"
|
||||
layout="topleft"
|
||||
name="solo_username_label"
|
||||
text_color="LtGray"
|
||||
value="Username:"
|
||||
visible="false"
|
||||
right="-4" />
|
||||
|
||||
<button
|
||||
name="set_name"
|
||||
layout="topleft"
|
||||
follows="top|left"
|
||||
image_overlay="Edit_Wrench"
|
||||
top="21"
|
||||
left="4"
|
||||
height="23"
|
||||
width="23"
|
||||
tool_tip="Set Display Name"/>
|
||||
|
||||
<text
|
||||
left_pad="4"
|
||||
follows="top|left|right"
|
||||
font="SansSerifBigBold"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="user_name"
|
||||
text_color="White"
|
||||
value="(loading...)"
|
||||
use_ellipses="true"
|
||||
visible="true"
|
||||
right="-4" />
|
||||
|
||||
<text
|
||||
left="4"
|
||||
top_delta="0"
|
||||
follows="top|left|right"
|
||||
font="SansSerifBigBold"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="solo_user_name"
|
||||
text_color="White"
|
||||
value="(loading...)"
|
||||
use_ellipses="true"
|
||||
visible="false"
|
||||
right="-4" />
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
font="SansSerifBold"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_delta="0"
|
||||
name="user_name_small"
|
||||
text_color="White"
|
||||
top_delta="-4"
|
||||
value="(loading...)"
|
||||
use_ellipses="true"
|
||||
visible="false"
|
||||
wrap="true"
|
||||
right="-4" />
|
||||
|
||||
<text
|
||||
follows="top|left"
|
||||
height="13"
|
||||
layout="topleft"
|
||||
left="30"
|
||||
name="user_label"
|
||||
text_color="LtGray"
|
||||
top_pad="10"
|
||||
value="Username:"
|
||||
width="70" />
|
||||
|
||||
<text
|
||||
follows="top|left|right"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
left_pad="0"
|
||||
name="user_slid"
|
||||
text_color="EmphasisColor"
|
||||
font="SansSerifBold"
|
||||
top_delta="-2"
|
||||
use_ellipses="true"
|
||||
value="(loading...)"
|
||||
wrap="true"
|
||||
right="-4"
|
||||
/>
|
||||
|
||||
<panel
|
||||
name="lifes_images_panel"
|
||||
follows="left|top|right"
|
||||
height="225"
|
||||
top="47"
|
||||
left="0"
|
||||
right="-1"
|
||||
layout="topleft">
|
||||
|
||||
<texture_picker
|
||||
allow_no_texture="true"
|
||||
default_image_name="None"
|
||||
enabled="true"
|
||||
fallback_image="Generic_Person_Large"
|
||||
follows="top|left"
|
||||
height="225"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
name="2nd_life_pic"
|
||||
top_pad="0"
|
||||
width="275" />
|
||||
|
||||
<icon
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
height="225"
|
||||
image_name="spacer24.tga"
|
||||
layout="topleft"
|
||||
name="2nd_life_edit_icon"
|
||||
label=""
|
||||
tool_tip="Click to select an image"
|
||||
width="275" />
|
||||
|
||||
</panel>
|
||||
|
||||
<text_editor
|
||||
type="string"
|
||||
length="1"
|
||||
follows="all"
|
||||
font="SansSerifSmall"
|
||||
height="120"
|
||||
layout="topleft"
|
||||
left="4"
|
||||
top_pad="-14"
|
||||
max_length="65000"
|
||||
name="sl_description_edit"
|
||||
right="-4"
|
||||
word_wrap="true" />
|
||||
|
||||
<check_box
|
||||
follows="bottom|left|right"
|
||||
font="SansSerifSmall"
|
||||
label="Show me in Search results"
|
||||
layout="topleft"
|
||||
left="4"
|
||||
name="show_in_search_checkbox"
|
||||
height="15"
|
||||
label_text.text_color="White"
|
||||
top_pad="8"
|
||||
right="-4" />
|
||||
|
||||
<text
|
||||
follows="bottom|left|right"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
left="4"
|
||||
name="title_acc_status_text"
|
||||
top_pad="6"
|
||||
value="Account:"
|
||||
right="-4" />
|
||||
|
||||
<view_border
|
||||
top_pad="0"
|
||||
right="-4"
|
||||
height="28"
|
||||
bevel_style="in"
|
||||
follows="bottom|left|right" />
|
||||
|
||||
<text_editor
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
allow_scroll="false"
|
||||
bg_visible="false"
|
||||
follows="bottom|left|right"
|
||||
h_pad="0"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
name="acc_status_text"
|
||||
read_only="true"
|
||||
v_pad="0"
|
||||
value="Resident. No payment info on file."
|
||||
right="-4"
|
||||
word_wrap="true" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
follows="bottom|left|right"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
top_pad="2"
|
||||
name="my_account_link"
|
||||
value="[[URL] Go to Dashboard]"
|
||||
right="-4" />
|
||||
|
||||
<text
|
||||
follows="bottom|left|right"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
name="title_partner_text"
|
||||
top_pad="10"
|
||||
value="Partner:"
|
||||
right="-4" />
|
||||
|
||||
<view_border
|
||||
top_pad="0"
|
||||
right="-4"
|
||||
height="15"
|
||||
bevel_style="in"
|
||||
follows="bottom|left|right" />
|
||||
|
||||
<panel
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
follows="bottom|left|right"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
name="partner_data_panel"
|
||||
right="-4">
|
||||
|
||||
<text
|
||||
follows="left|top|right"
|
||||
height="12"
|
||||
initial_value="(retrieving)"
|
||||
layout="topleft"
|
||||
left="0"
|
||||
name="partner_text"
|
||||
top="0"
|
||||
use_ellipses="true"
|
||||
right="-4" />
|
||||
|
||||
</panel>
|
||||
|
||||
<text
|
||||
follows="bottom|left|right"
|
||||
top_pad="2"
|
||||
height="15"
|
||||
layout="topleft"
|
||||
name="partner_edit_link"
|
||||
value="[[URL] Edit]"
|
||||
right="-4" />
|
||||
|
||||
</panel>
|
||||
|
||||
<panel
|
||||
name="rl_data_panel"
|
||||
top="0"
|
||||
left="0"
|
||||
width="313"
|
||||
height="552"
|
||||
title="More Info"
|
||||
follows="all"
|
||||
layout="topleft">
|
||||
|
||||
<text
|
||||
top="24"
|
||||
left="31"
|
||||
follows="top|left|right"
|
||||
font="SansSerifBigBold"
|
||||
height="20"
|
||||
layout="topleft"
|
||||
name="rl_picture_caption"
|
||||
text_color="White"
|
||||
value="Additional Picture"
|
||||
use_ellipses="true"
|
||||
visible="true"
|
||||
right="-4" />
|
||||
|
||||
<panel
|
||||
name="first_life_image_panel"
|
||||
follows="left|top|right"
|
||||
height="225"
|
||||
top="47"
|
||||
left="0"
|
||||
right="-1"
|
||||
layout="topleft">
|
||||
|
||||
<texture_picker
|
||||
allow_no_texture="true"
|
||||
default_image_name="None"
|
||||
enabled="true"
|
||||
fallback_image="Generic_Person_Large"
|
||||
follows="top|left"
|
||||
height="225"
|
||||
layout="topleft"
|
||||
left="20"
|
||||
name="real_world_pic"
|
||||
top_pad="0"
|
||||
width="275" />
|
||||
|
||||
<icon
|
||||
left_delta="0"
|
||||
top_delta="0"
|
||||
width="275"
|
||||
height="225"
|
||||
image_name="spacer24.tga"
|
||||
name="real_world_edit_icon"
|
||||
label=""
|
||||
tool_tip="Click to select an image"
|
||||
layout="topleft" />
|
||||
|
||||
</panel>
|
||||
|
||||
<text_editor
|
||||
type="string"
|
||||
length="1"
|
||||
follows="all"
|
||||
font="SansSerifSmall"
|
||||
height="246"
|
||||
layout="topleft"
|
||||
left="4"
|
||||
top_pad="-14"
|
||||
max_length="65000"
|
||||
name="fl_description_edit"
|
||||
right="-4"
|
||||
word_wrap="true" />
|
||||
|
||||
<text
|
||||
type="string"
|
||||
length="1"
|
||||
follows="bottom|left|right"
|
||||
font="SansSerifSmall"
|
||||
height="15"
|
||||
name="title_homepage_text"
|
||||
top_pad="10"
|
||||
right="-4"
|
||||
layout="topleft">
|
||||
Web Page:
|
||||
</text>
|
||||
|
||||
<line_editor
|
||||
follows="bottom|left|right"
|
||||
font="SansSerifSmall"
|
||||
height="20"
|
||||
top_pad="0"
|
||||
value="http://"
|
||||
name="homepage_edit"
|
||||
right="-4"
|
||||
layout="topleft" />
|
||||
|
||||
</panel>
|
||||
|
||||
</tab_container>
|
||||
|
||||
<panel
|
||||
follows="bottom|left|right"
|
||||
height="28"
|
||||
left="0"
|
||||
name="profile_me_buttons_panel"
|
||||
background_opaque="true"
|
||||
bg_alpha_color="DkGray2"
|
||||
bg_opaque_color="DkGray2"
|
||||
background_visible="true"
|
||||
top_pad="0"
|
||||
right="-1">
|
||||
|
||||
<layout_stack
|
||||
follows="bottom|left|right"
|
||||
height="28"
|
||||
layout="topleft"
|
||||
name="bottom_panel_ls"
|
||||
left="4"
|
||||
orientation="horizontal"
|
||||
top_pad="0"
|
||||
right="-3">
|
||||
|
||||
<layout_panel
|
||||
follows="bottom|left|right"
|
||||
height="23"
|
||||
layout="bottomleft"
|
||||
name="save_changes_btn_lp"
|
||||
top="0"
|
||||
user_resize="false"
|
||||
auto_resize="true"
|
||||
width="145">
|
||||
|
||||
<button
|
||||
follows="bottom|left|right"
|
||||
height="23"
|
||||
label="Save Changes"
|
||||
layout="topleft"
|
||||
left="1"
|
||||
name="save_btn"
|
||||
top="0"
|
||||
width="144" />
|
||||
</layout_panel>
|
||||
|
||||
<layout_panel
|
||||
follows="bottom|left|right"
|
||||
height="23"
|
||||
layout="bottomleft"
|
||||
left_pad="3"
|
||||
name="show_on_map_btn_lp"
|
||||
top="0"
|
||||
user_resize="false"
|
||||
auto_resize="true"
|
||||
width="145">
|
||||
|
||||
<button
|
||||
follows="bottom|left|right"
|
||||
height="23"
|
||||
label="Cancel"
|
||||
layout="topleft"
|
||||
left="1"
|
||||
name="cancel_btn"
|
||||
top="0"
|
||||
width="144" />
|
||||
|
||||
</layout_panel>
|
||||
|
||||
</layout_stack>
|
||||
|
||||
</panel>
|
||||
|
||||
</panel>
|
||||
|
|
@ -19,27 +19,50 @@
|
|||
layout="topleft"
|
||||
visible="false"
|
||||
/>
|
||||
<texture_picker
|
||||
<icon
|
||||
name="real_world_pic"
|
||||
enabled="false"
|
||||
top="10"
|
||||
left="6"
|
||||
height="225"
|
||||
width="202"
|
||||
image_name="Generic_Person_Large"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
allow_no_texture="true"
|
||||
default_image_name="None"
|
||||
fallback_image="Generic_Person_Large"
|
||||
/>
|
||||
top="10"
|
||||
left="8"
|
||||
height="160"
|
||||
width="160"/>
|
||||
<loading_indicator
|
||||
name="image_upload_indicator"
|
||||
top="79"
|
||||
left="77"
|
||||
height="23"
|
||||
width="23"
|
||||
follows="top|left"
|
||||
layout="topleft"
|
||||
visible="false"/>
|
||||
<button
|
||||
name="fl_upload_image"
|
||||
label="Change Photo"
|
||||
top="127"
|
||||
left="175"
|
||||
height="20"
|
||||
width="120"
|
||||
follows="top|left"
|
||||
layout="topleft"/>
|
||||
<button
|
||||
name="fl_remove_image"
|
||||
label="Remove Photo"
|
||||
top_pad="5"
|
||||
left_delta="0"
|
||||
height="20"
|
||||
width="120"
|
||||
follows="top|left"
|
||||
layout="topleft"/>
|
||||
<text_editor
|
||||
name="fl_description_edit"
|
||||
trusted_content="false"
|
||||
enabled="false"
|
||||
top="225"
|
||||
top="180"
|
||||
left="6"
|
||||
right="-7"
|
||||
height="183"
|
||||
right="-6"
|
||||
height="224"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
bg_readonly_color="Transparent"
|
||||
|
|
@ -48,4 +71,24 @@
|
|||
parse_urls="true"
|
||||
word_wrap="true"
|
||||
/>
|
||||
<button
|
||||
name="fl_save_changes"
|
||||
label="Save"
|
||||
top_pad="5"
|
||||
right="-108"
|
||||
height="20"
|
||||
width="80"
|
||||
enabled="false"
|
||||
follows="right|bottom"
|
||||
layout="topleft"/>
|
||||
<button
|
||||
name="fl_discard_changes"
|
||||
label="Discard"
|
||||
top_delta="0"
|
||||
right="-4"
|
||||
height="20"
|
||||
width="100"
|
||||
enabled="false"
|
||||
follows="right|bottom"
|
||||
layout="topleft"/>
|
||||
</panel>
|
||||
|
|
|
|||
|
|
@ -1,250 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<panel
|
||||
name="panel_profile_interests"
|
||||
label="Interests"
|
||||
top="0"
|
||||
left="0"
|
||||
height="480"
|
||||
width="420"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
>
|
||||
<loading_indicator
|
||||
name="progress_indicator"
|
||||
top="5"
|
||||
right="-10"
|
||||
height="23"
|
||||
width="23"
|
||||
follows="top|right"
|
||||
layout="topleft"
|
||||
visible="false"
|
||||
/>
|
||||
<text
|
||||
name="I Want To:"
|
||||
top="10"
|
||||
left="4"
|
||||
height="16"
|
||||
width="70"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
halign="right"
|
||||
>
|
||||
I Want To:
|
||||
</text>
|
||||
<check_box
|
||||
name="chk0"
|
||||
label="Build"
|
||||
enabled="false"
|
||||
top_delta="0"
|
||||
left="75"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="chk1"
|
||||
label="Explore"
|
||||
enabled="false"
|
||||
left_pad="80"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="chk2"
|
||||
label="Meet"
|
||||
enabled="false"
|
||||
top_pad="5"
|
||||
left="75"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="chk6"
|
||||
label="Be Hired"
|
||||
enabled="false"
|
||||
left_pad="80"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="chk3"
|
||||
label="Group"
|
||||
enabled="false"
|
||||
top_pad="5"
|
||||
left="75"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="chk4"
|
||||
label="Buy"
|
||||
enabled="false"
|
||||
left_pad="80"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="chk5"
|
||||
label="Sell"
|
||||
enabled="false"
|
||||
top_pad="5"
|
||||
left="75"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="chk7"
|
||||
label="Hire"
|
||||
enabled="false"
|
||||
left_pad="80"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<line_editor
|
||||
name="want_to_edit"
|
||||
enabled="false"
|
||||
top_pad="10"
|
||||
left="76"
|
||||
height="18"
|
||||
width="330"
|
||||
follows="left|top|right"
|
||||
layout="topleft"
|
||||
text_pad_left="4"
|
||||
max_length_bytes="254"
|
||||
>
|
||||
(loading...)
|
||||
</line_editor>
|
||||
|
||||
<text
|
||||
name="Skills:"
|
||||
top_pad="20"
|
||||
left="4"
|
||||
height="16"
|
||||
width="70"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
halign="right"
|
||||
>
|
||||
Skills:
|
||||
</text>
|
||||
<check_box
|
||||
name="schk0"
|
||||
label="Textures"
|
||||
enabled="false"
|
||||
top_delta="0"
|
||||
left="75"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="schk1"
|
||||
label="Architecture"
|
||||
enabled="false"
|
||||
left_pad="80"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<!-- The next two are out of order on purpose due to legacy ordering -->
|
||||
<check_box
|
||||
name="schk3"
|
||||
label="Modeling"
|
||||
enabled="false"
|
||||
top_pad="5"
|
||||
left="75"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="schk2"
|
||||
label="Event Planning"
|
||||
enabled="false"
|
||||
left_pad="80"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="schk4"
|
||||
label="Scripting"
|
||||
enabled="false"
|
||||
top_pad="5"
|
||||
left="75"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="schk5"
|
||||
label="Custom Characters"
|
||||
enabled="false"
|
||||
left_pad="80"
|
||||
height="16"
|
||||
width="90"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
/>
|
||||
<line_editor
|
||||
name="skills_edit"
|
||||
enabled="false"
|
||||
top_pad="10"
|
||||
left="76"
|
||||
height="18"
|
||||
width="330"
|
||||
follows="left|top|right"
|
||||
layout="topleft"
|
||||
text_pad_left="4"
|
||||
max_length_bytes="254"
|
||||
>
|
||||
(loading...)
|
||||
</line_editor>
|
||||
|
||||
<text
|
||||
name="Languages:"
|
||||
top_pad="20"
|
||||
left="4"
|
||||
height="16"
|
||||
width="70"
|
||||
follows="left|top"
|
||||
layout="topleft"
|
||||
halign="right"
|
||||
>
|
||||
Languages:
|
||||
</text>
|
||||
<line_editor
|
||||
name="languages_edit"
|
||||
enabled="false"
|
||||
top_delta="-1"
|
||||
left="76"
|
||||
height="18"
|
||||
width="330"
|
||||
follows="left|top|right"
|
||||
layout="topleft"
|
||||
text_pad_left="4"
|
||||
max_length_bytes="254"
|
||||
>
|
||||
(loading...)
|
||||
</line_editor>
|
||||
</panel>
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
/>
|
||||
<text
|
||||
name="status_message"
|
||||
value="Private notes on this avatar:"
|
||||
value="Make notes about this person here. No one else can see your notes."
|
||||
top="6"
|
||||
left="6"
|
||||
right="-6"
|
||||
|
|
@ -33,55 +33,33 @@
|
|||
<text_editor
|
||||
name="notes_edit"
|
||||
enabled="false"
|
||||
top_pad="4"
|
||||
top="28"
|
||||
left="6"
|
||||
right="-6"
|
||||
height="311"
|
||||
bottom="-26"
|
||||
follows="all"
|
||||
layout="topleft"
|
||||
max_length="65530"
|
||||
word_wrap="true"
|
||||
/>
|
||||
<text
|
||||
name="status_message2"
|
||||
value="Allow this avatar to:"
|
||||
top_pad="11"
|
||||
left="6"
|
||||
right="-6"
|
||||
height="16"
|
||||
follows="left|bottom|right"
|
||||
layout="topleft"
|
||||
font.style="BOLD"
|
||||
/>
|
||||
<check_box
|
||||
name="status_check"
|
||||
label="See when I am online"
|
||||
<button
|
||||
name="notes_save_changes"
|
||||
label="Save"
|
||||
bottom="-1"
|
||||
right="-108"
|
||||
height="20"
|
||||
width="80"
|
||||
enabled="false"
|
||||
top_pad="0"
|
||||
left="10"
|
||||
height="16"
|
||||
width="293"
|
||||
follows="left|bottom|right"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="map_check"
|
||||
label="Find me on the world map"
|
||||
follows="bottom|right"
|
||||
layout="topleft"/>
|
||||
<button
|
||||
name="notes_discard_changes"
|
||||
label="Discard"
|
||||
bottom="-1"
|
||||
right="-4"
|
||||
height="20"
|
||||
width="100"
|
||||
enabled="false"
|
||||
left="10"
|
||||
height="16"
|
||||
width="293"
|
||||
follows="left|bottom|right"
|
||||
layout="topleft"
|
||||
/>
|
||||
<check_box
|
||||
name="objects_check"
|
||||
label="Edit, delete or take my objects"
|
||||
enabled="false"
|
||||
left="10"
|
||||
height="16"
|
||||
width="293"
|
||||
follows="left|bottom|right"
|
||||
layout="topleft"
|
||||
/>
|
||||
follows="bottom|right"
|
||||
layout="topleft"/>
|
||||
</panel>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue