diff options
Diffstat (limited to 'indra')
-rw-r--r-- | indra/newview/llpanelprofile.cpp | 48 | ||||
-rw-r--r-- | indra/newview/llpanelprofile.h | 11 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_profile_firstlife.xml | 42 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/panel_profile_secondlife.xml | 17 |
4 files changed, 95 insertions, 23 deletions
diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 53d0cbec9f..c00e25a31d 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -46,6 +46,7 @@ #include "lltexturectrl.h" #include "lltoggleablemenu.h" #include "llgrouplist.h" +#include "llurlaction.h" // Image #include "llimagej2c.h" @@ -622,7 +623,7 @@ BOOL LLPanelProfileSecondLife::postBuild() mShowInSearchCheckbox = getChild<LLCheckBoxCtrl>("show_in_search_checkbox"); mSecondLifePic = getChild<LLIconCtrl>("2nd_life_pic"); mSecondLifePicLayout = getChild<LLPanel>("image_stack"); - mDescriptionEdit = getChild<LLTextBase>("sl_description_edit"); + mDescriptionEdit = getChild<LLTextEditor>("sl_description_edit"); mAgentActionMenuButton = getChild<LLMenuButton>("agent_actions_menu"); mSaveDescriptionChanges = getChild<LLButton>("save_description_changes"); mDiscardDescriptionChanges = getChild<LLButton>("discard_description_changes"); @@ -631,6 +632,7 @@ BOOL LLPanelProfileSecondLife::postBuild() mGroupList->setReturnCallback([this](LLUICtrl*, const LLSD&) { LLPanelProfileSecondLife::openGroupProfile(); }); mSaveDescriptionChanges->setCommitCallback([this](LLUICtrl*, void*) { onSaveDescriptionChanges(); }, nullptr); mDiscardDescriptionChanges->setCommitCallback([this](LLUICtrl*, void*) { onDiscardDescriptionChanges(); }, nullptr); + mDescriptionEdit->setKeystrokeCallback([this](LLTextEditor* caller) { onSetDescriptionDirty(); }); return TRUE; } @@ -781,7 +783,7 @@ void LLPanelProfileSecondLife::resetData() LLRect imageRect = mSecondLifePicLayout->getRect(); mSecondLifePicLayout->reshape(imageRect.getHeight(), imageRect.getHeight()); - mDescriptionEdit->setValue(LLStringUtil::null); + setDescriptionText(LLStringUtil::null); mGroups.clear(); mGroupList->setGroups(mGroups); } @@ -887,7 +889,7 @@ void LLPanelProfileSecondLife::fillCommonData(const LLAvatarData* avatar_data) args["[AGE]"] = LLDateUtil::ageFromDate( avatar_data->born_on, LLDate::now()); std::string register_date = getString("AgeFormat", args); getChild<LLUICtrl>("user_age")->setValue(register_date ); - mDescriptionEdit->setValue(avatar_data->about_text); + setDescriptionText(avatar_data->about_text); mImageAssetId = avatar_data->image_id; mSecondLifePic->setValue(mImageAssetId); @@ -1058,10 +1060,6 @@ void LLPanelProfileSecondLife::updateButtons() mShowInSearchCheckbox->setVisible(TRUE); mShowInSearchCheckbox->setEnabled(TRUE); mDescriptionEdit->setEnabled(TRUE); - - // todo: enable/disble buttons based on text changes - //mSaveDescriptionChanges-> - //mDiscardDescriptionChanges-> } } @@ -1217,7 +1215,10 @@ void LLPanelProfileSecondLife::onCommitMenu(const LLSD& userdata) } else if (item_name == "edit_partner") { - // todo: open https://secondlife.com/my/account/partners.php or whatever link is correct for the grid + std::string url = "https://[GRID]/my/account/partners.php"; + LLSD subs; + url = LLWeb::expandURLSubstitutions(url, subs); + LLUrlAction::openURL(url); } else if (item_name == "change_photo") { @@ -1334,13 +1335,28 @@ void LLPanelProfileSecondLife::onAvatarNameCacheSetName(const LLUUID& agent_id, LLFloaterReg::showInstance("display_name"); } +void LLPanelProfileSecondLife::setDescriptionText(const std::string &text) +{ + mSaveDescriptionChanges->setEnabled(FALSE); + mDiscardDescriptionChanges->setEnabled(FALSE); + mDescriptionText = text; + mDescriptionEdit->setValue(mDescriptionText); +} + +void LLPanelProfileSecondLife::onSetDescriptionDirty() +{ + mSaveDescriptionChanges->setEnabled(TRUE); + mDiscardDescriptionChanges->setEnabled(TRUE); +} + void LLPanelProfileSecondLife::onSaveDescriptionChanges() { // todo: force commit changes in mDescriptionEdit, reset dirty flags // todo: check if mDescriptionEdit can be made to not commit immediately + mDescriptionText = mDescriptionEdit->getValue().asString(); LLSD params; - params["sl_about_text"] = mDescriptionEdit->getValue().asString(); + params["sl_about_text"] = mDescriptionText; std::string cap_url = gAgent.getRegionCapability(PROFILE_PROPERTIES_CAP); if (!cap_url.empty()) @@ -1358,9 +1374,7 @@ void LLPanelProfileSecondLife::onSaveDescriptionChanges() void LLPanelProfileSecondLife::onDiscardDescriptionChanges() { - // todo: restore mDescriptionEdit - - updateButtons(); + setDescriptionText(mDescriptionText); } ////////////////////////////////////////////////////////////////////////// @@ -1547,6 +1561,11 @@ BOOL LLPanelProfileFirstLife::postBuild() mDescriptionEdit = getChild<LLTextEditor>("fl_description_edit"); mPicture = getChild<LLTextureCtrl>("real_world_pic"); + mChangePhoto = getChild<LLButton>("fl_upload_image"); + mRemovePhoto = getChild<LLButton>("fl_remove_image"); + mSaveChanges = getChild<LLButton>("fl_save_changes"); + mDiscardChanges = getChild<LLButton>("fl_discard_changes"); + mDescriptionEdit->setFocusReceivedCallback(boost::bind(&LLPanelProfileFirstLife::onDescriptionFocusReceived, this)); return TRUE; @@ -1597,6 +1616,11 @@ void LLPanelProfileFirstLife::resetData() { mDescriptionEdit->setValue(LLStringUtil::null); mPicture->setValue(mPicture->getDefaultImageAssetID()); + + mChangePhoto->setVisible(getSelfProfile()); + mRemovePhoto->setVisible(getSelfProfile()); + mSaveChanges->setVisible(getSelfProfile()); + mDiscardChanges->setVisible(getSelfProfile()); } void LLPanelProfileFirstLife::apply(LLAvatarData* data) diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index fb38a361cb..345935a091 100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h @@ -168,6 +168,8 @@ private: bool onCheckMenu(const LLSD& userdata); void onAvatarNameCacheSetName(const LLUUID& id, const LLAvatarName& av_name); + void setDescriptionText(const std::string &text); + void onSetDescriptionDirty(); void onSaveDescriptionChanges(); void onDiscardDescriptionChanges(); @@ -180,13 +182,14 @@ private: LLCheckBoxCtrl* mShowInSearchCheckbox; LLIconCtrl* mSecondLifePic; LLPanel* mSecondLifePicLayout; - LLTextBase* mDescriptionEdit; + LLTextEditor* mDescriptionEdit; LLMenuButton* mAgentActionMenuButton; LLButton* mSaveDescriptionChanges; LLButton* mDiscardDescriptionChanges; bool mVoiceStatus; bool mWaitingForImageUpload; + std::string mDescriptionText; LLUUID mImageAssetId; boost::signals2::connection mAvatarNameCacheConnection; @@ -275,6 +278,10 @@ protected: LLTextEditor* mDescriptionEdit; LLTextureCtrl* mPicture; + LLButton* mChangePhoto; + LLButton* mRemovePhoto; + LLButton* mSaveChanges; + LLButton* mDiscardChanges; bool mIsEditing; std::string mCurrentDescription; @@ -384,7 +391,7 @@ private: 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 diff --git a/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml b/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml index 108eb9443d..70063e8fc9 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_firstlife.xml @@ -32,14 +32,32 @@ default_image_name="None" fallback_image="Generic_Person_Large" /> + <button + name="fl_upload_image" + label="Change Photo" + top="167" + left_pad="5" + 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="220" left="6" - right="-7" - height="183" + right="-6" + height="230" follows="all" layout="topleft" bg_readonly_color="Transparent" @@ -48,4 +66,22 @@ parse_urls="true" word_wrap="true" /> + <button + name="fl_save_changes" + label="Save" + top="429" + right="-108" + height="20" + width="80" + follows="top|right" + layout="topleft"/> + <button + name="fl_discard_changes" + label="Discard" + top_delta="0" + right="-4" + height="20" + width="100" + follows="top|right" + layout="topleft"/> </panel> diff --git a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml index 3ed704b090..3aa4b47612 100644 --- a/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml +++ b/indra/newview/skins/default/xui/en/panel_profile_secondlife.xml @@ -32,6 +32,7 @@ Account: [ACCTTYPE] bottom="-1" follows="all" layout="topleft" + animate="false" orientation="vertical"> <layout_panel @@ -50,6 +51,7 @@ Account: [ACCTTYPE] bottom="-1" follows="all" layout="topleft" + animate="false" orientation="horizontal"> <layout_panel @@ -202,6 +204,7 @@ Account: [ACCTTYPE] name="sl_description_edit" trusted_content="false" always_show_icons="true" + commit_on_focus_lost="false" enabled="false" top="1" left="1" @@ -232,9 +235,9 @@ Account: [ACCTTYPE] right="-105" height="20" width="80" + enabled="false" follows="top|right" - layout="topleft" - label_selected="Find on Map"/> + layout="topleft"/> <button name="discard_description_changes" label="Discard" @@ -242,9 +245,9 @@ Account: [ACCTTYPE] right="-1" height="20" width="100" + enabled="false" follows="top|right" - layout="topleft" - label_selected="Find on Map"/> + layout="topleft"/> <view_border bevel_style="none" height="0" @@ -270,12 +273,14 @@ Account: [ACCTTYPE] height="159" follows="all" layout="topleft" + animate="false" orientation="horizontal"> <layout_panel name="groups_panel" follows="all" layout="topleft" width="200" + height="159" auto_resize="true" user_resize="false"> <text @@ -289,7 +294,7 @@ Account: [ACCTTYPE] layout="topleft"/> <group_list name="group_list" - top_pad="1" + top="18" left="1" right="-1" bottom="-1" @@ -319,7 +324,7 @@ Account: [ACCTTYPE] follows="left|top|right" layout="topleft"/> <text_editor - name="notes_edit" + name="notes_snippet" trusted_content="false" always_show_icons="true" enabled="false" |