From 7d88f8814b2f4f409d182a6cabcd62b04ee4df89 Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Thu, 5 Nov 2015 19:40:26 +0200 Subject: [PATCH 1/3] SL-192 Edit Experience Profile shows up once an Exp is acquired --- indra/newview/llfloaterexperienceprofile.cpp | 29 +++++++++++--- indra/newview/llfloaterexperienceprofile.h | 2 + indra/newview/llfloaterexperiences.cpp | 42 ++++++++++++++++++-- indra/newview/llfloaterexperiences.h | 4 +- indra/newview/llpanelexperiences.cpp | 10 +++++ indra/newview/llpanelexperiences.h | 1 + 6 files changed, 79 insertions(+), 9 deletions(-) diff --git a/indra/newview/llfloaterexperienceprofile.cpp b/indra/newview/llfloaterexperienceprofile.cpp index 197162487d..4d60d01922 100644 --- a/indra/newview/llfloaterexperienceprofile.cpp +++ b/indra/newview/llfloaterexperienceprofile.cpp @@ -117,12 +117,20 @@ LLExperienceHandler gExperienceHandler; LLFloaterExperienceProfile::LLFloaterExperienceProfile(const LLSD& data) : LLFloater(data) - , mExperienceId(data.asUUID()) , mSaveCompleteAction(NOTHING) , mDirty(false) , mForceClose(false) { - + if (data.has("experience_id")) + { + mExperienceId = data["experience_id"].asUUID(); + mPostEdit = data.has("edit_experience") && data["edit_experience"].asBoolean(); + } + else + { + mExperienceId = data.asUUID(); + mPostEdit = false; + } } @@ -356,9 +364,7 @@ bool LLFloaterExperienceProfile::experiencePermission( LLHandle("tab_container"); - - tabs->selectTabByName("edit_panel_experience_info"); + changeToEdit(); } @@ -615,6 +621,12 @@ void LLFloaterExperienceProfile::refreshExperience( const LLSD& experience ) mDirty=false; mForceClose = false; getChild(BTN_SAVE)->setEnabled(mDirty); + + if (mPostEdit) + { + mPostEdit = false; + changeToEdit(); + } } void LLFloaterExperienceProfile::setPreferences( const LLSD& content ) @@ -829,6 +841,13 @@ void LLFloaterExperienceProfile::changeToView() } } +void LLFloaterExperienceProfile::changeToEdit() +{ + LLTabContainer* tabs = getChild("tab_container"); + + tabs->selectTabByName("edit_panel_experience_info"); +} + void LLFloaterExperienceProfile::onClickLocation() { LLViewerRegion* region = gAgent.getRegion(); diff --git a/indra/newview/llfloaterexperienceprofile.h b/indra/newview/llfloaterexperienceprofile.h index 78d54eb447..14e033d240 100644 --- a/indra/newview/llfloaterexperienceprofile.h +++ b/indra/newview/llfloaterexperienceprofile.h @@ -76,6 +76,7 @@ protected: void setEditGroup(LLUUID group_id); void changeToView(); + void changeToEdit(); void experienceForgotten(); void experienceBlocked(); @@ -99,6 +100,7 @@ protected: int mSaveCompleteAction; bool mDirty; bool mForceClose; + bool mPostEdit; // edit experience after opening and updating it }; #endif // LL_LLFLOATEREXPERIENCEPROFILE_H diff --git a/indra/newview/llfloaterexperiences.cpp b/indra/newview/llfloaterexperiences.cpp index 777dc382cd..63f1fab823 100644 --- a/indra/newview/llfloaterexperiences.cpp +++ b/indra/newview/llfloaterexperiences.cpp @@ -303,6 +303,32 @@ void LLFloaterExperiences::checkPurchaseInfo(LLPanelExperiences* panel, const LL LLFloaterExperiences::findInstance()->updateInfo("GetCreatorExperiences","Contrib_Experiences_Tab"); } +void LLFloaterExperiences::checkAndOpen(LLPanelExperiences* panel, const LLSD& content) const +{ + checkPurchaseInfo(panel, content); + + // determine new item + const LLSD& response_ids = content["experience_ids"]; + + if (mPrepurchaseIds.size() + 1 == response_ids.size()) + { + // we have a new element + for (LLSD::array_const_iterator it = response_ids.beginArray(); it != response_ids.endArray(); ++it) + { + LLUUID experience_id = it->asUUID(); + if (std::find(mPrepurchaseIds.begin(), mPrepurchaseIds.end(), experience_id) == mPrepurchaseIds.end()) + { + // new element found, open it + LLSD args; + args["experience_id"] = experience_id; + args["edit_experience"] = true; + LLFloaterReg::showInstance("experience_profile", args, true); + break; + } + } + } +} + void LLFloaterExperiences::updateInfo(std::string experiences, std::string tab) { LLViewerRegion* region = gAgent.getRegion(); @@ -318,18 +344,28 @@ void LLFloaterExperiences::updateInfo(std::string experiences, std::string tab) } } -void LLFloaterExperiences::sendPurchaseRequest() const +void LLFloaterExperiences::sendPurchaseRequest() { LLViewerRegion* region = gAgent.getRegion(); std::string url = region->getCapability("AgentExperiences"); if(!url.empty()) { LLSD content; + const std::string tab_owned_name = "Owned_Experiences_Tab"; + + // extract ids for experiences that we already have + LLTabContainer* tabs = getChild("xp_tabs"); + LLPanelExperiences* tab_owned = (LLPanelExperiences*)tabs->getPanelByName(tab_owned_name); + mPrepurchaseIds.clear(); + if (tab_owned) + { + tab_owned->getExperienceIdsList(mPrepurchaseIds); + } LLExperienceListResponder::NameMap nameMap; - nameMap["experience_ids"]="Owned_Experiences_Tab"; + nameMap["experience_ids"] = tab_owned_name; LLExperienceListResponder* responder = new LLExperienceListResponder(getDerivedHandle(), nameMap, "ExperienceAcquireFailed"); - responder->mCallback = boost::bind(&LLFloaterExperiences::checkPurchaseInfo, this, _1, _2); + responder->mCallback = boost::bind(&LLFloaterExperiences::checkAndOpen, this, _1, _2); LLHTTPClient::post(url, content, responder); } } diff --git a/indra/newview/llfloaterexperiences.h b/indra/newview/llfloaterexperiences.h index 769283ff07..06fd6c93d6 100644 --- a/indra/newview/llfloaterexperiences.h +++ b/indra/newview/llfloaterexperiences.h @@ -49,12 +49,14 @@ protected: LLPanelExperiences* addTab(const std::string& name, bool select); bool updatePermissions(const LLSD& permission); - void sendPurchaseRequest() const; + void sendPurchaseRequest(); void checkPurchaseInfo(LLPanelExperiences* panel, const LLSD& content)const; + void checkAndOpen(LLPanelExperiences* panel, const LLSD& content) const; void updateInfo(std::string experiences, std::string tab); private: + std::vector mPrepurchaseIds; }; #endif //LL_LLFLOATEREXPERIENCES_H diff --git a/indra/newview/llpanelexperiences.cpp b/indra/newview/llpanelexperiences.cpp index 3ee4b5e968..37981b36a9 100644 --- a/indra/newview/llpanelexperiences.cpp +++ b/indra/newview/llpanelexperiences.cpp @@ -98,6 +98,16 @@ void LLPanelExperiences::setExperienceList( const LLSD& experiences ) mExperiencesList->sort(); } +void LLPanelExperiences::getExperienceIdsList(std::vector& result) +{ + std::vector ids; + mExperiencesList->getValues(ids); + for (LLSD::array_const_iterator it = ids.begin(); it != ids.end(); ++it) + { + result.push_back(it->asUUID()); + } +} + LLPanelExperiences* LLPanelExperiences::create(const std::string& name) { LLPanelExperiences* panel= new LLPanelExperiences(); diff --git a/indra/newview/llpanelexperiences.h b/indra/newview/llpanelexperiences.h index 0370499583..f29fdfdecb 100644 --- a/indra/newview/llpanelexperiences.h +++ b/indra/newview/llpanelexperiences.h @@ -58,6 +58,7 @@ public: /*virtual*/ void onClosePanel(); void setExperienceList(const LLSD& experiences); + void getExperienceIdsList(std::vector& result); LLExperienceItem* getSelectedExperienceItem(); void removeExperiences( const LLSD& ids ); From c29fbae9d68ea5bf6d9b5256279071164544d83f Mon Sep 17 00:00:00 2001 From: andreykproductengine Date: Tue, 10 Nov 2015 17:57:25 +0200 Subject: [PATCH 2/3] MAINT-5829 FIXED About Land floater defect --- .../default/xui/en/floater_about_land.xml | 76 ++++++++++--------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml index edf028bf60..384ae6bb1e 100755 --- a/indra/newview/skins/default/xui/en/floater_about_land.xml +++ b/indra/newview/skins/default/xui/en/floater_about_land.xml @@ -2,13 +2,13 @@ + width="634"> "Parcel_PG_Dark" @@ -39,17 +39,18 @@ + tab_position="left" + tab_width="140" + tab_padding_right="3" + top="6" + width="633"> @@ -302,7 +303,7 @@ label="Deed" layout="topleft" left_pad="2" - right="-10" + right="-154" name="Deed..." tool_tip="You may only deed land if you are an officer in the selected group." top_delta="-2" @@ -365,7 +366,7 @@ label="Sell Land" layout="topleft" left_pad="5" - right="-10" + right="-154" name="Sell Land..." width="145" top_delta="-25"/> @@ -412,7 +413,7 @@ label="Cancel Land Sale" label_selected="Cancel Land Sale" layout="topleft" - right="-10" + right="-154" name="Cancel Land Sale" left_pad="5" top_pad="7" @@ -527,7 +528,7 @@ height="23" label="Buy For Group" layout="topleft" - right="-10" + right="-154" name="Buy For Group..." top_delta="0" width="180" /> @@ -547,7 +548,7 @@ height="23" label="Abandon Land" layout="topleft" - right="-10" + right="-154" name="Abandon Land..." top_pad="-47" width="180" /> @@ -645,8 +646,8 @@ type="string" length="1" enabled="false" - follows="all" - height="200" + follows="top|left" + height="175" layout="topleft" left="10" max_length="65535" @@ -663,7 +664,7 @@ halign="right" layout="topleft" right="-10" - top_pad="0" + top_pad="25" mouse_opaque="false" name="covenant_timestamp_text" width="460"> @@ -930,7 +931,7 @@ label_selected="Show" layout="topleft" name="ShowOwner" - right="-140" + right="-284" width="60" top_delta="-6"/>