# 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.xml
master
Ansariel 2022-04-20 15:08:09 +02:00
commit bca1892803
31 changed files with 2003 additions and 2634 deletions

View File

@ -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");

View File

@ -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();

View File

@ -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 );
}
}

View File

@ -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();

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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();

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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(

View File

@ -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()

View File

@ -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:

View File

@ -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");

View File

@ -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") &&

View File

@ -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);

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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