diff options
| -rw-r--r-- | indra/newview/llavataractions.cpp | 40 | ||||
| -rw-r--r-- | indra/newview/llavataractions.h | 2 | ||||
| -rw-r--r-- | indra/newview/llfloaterprofile.cpp | 5 | ||||
| -rw-r--r-- | indra/newview/llfloaterprofile.h | 1 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.cpp | 6 | ||||
| -rw-r--r-- | indra/newview/llpanelprofile.h | 1 | ||||
| -rw-r--r-- | indra/newview/llpanelprofileclassifieds.cpp | 46 | ||||
| -rw-r--r-- | indra/newview/llpanelprofileclassifieds.h | 3 | ||||
| -rw-r--r-- | indra/newview/llpanelprofilepicks.cpp | 7 | 
9 files changed, 103 insertions, 8 deletions
| diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp index 112a2f6624..25ba7c365f 100644 --- a/indra/newview/llavataractions.cpp +++ b/indra/newview/llavataractions.cpp @@ -63,12 +63,14 @@  #include "llnotificationsutil.h"	// for LLNotificationsUtil  #include "llpaneloutfitedit.h"  #include "llpanelprofile.h" +#include "llparcel.h"  #include "llrecentpeople.h"  #include "lltrans.h"  #include "llviewercontrol.h"  #include "llviewerobjectlist.h"  #include "llviewermessage.h"	// for handle_lure  #include "llviewernetwork.h" //LLGridManager +#include "llviewerparcelmgr.h"  #include "llviewerregion.h"  #include "lltrans.h"  #include "llcallingcard.h" @@ -367,6 +369,34 @@ void LLAvatarActions::showPick(const LLUUID& avatar_id, const LLUUID& pick_id)  }  // static +void LLAvatarActions::createPick() +{ +    LLFloaterProfile* profilefloater = dynamic_cast<LLFloaterProfile*>(LLFloaterReg::showInstance("profile", LLSD().with("id", gAgent.getID()))); +    LLViewerRegion* region = gAgent.getRegion(); +    if (profilefloater && region) +    { +        LLPickData data; +        data.pos_global = gAgent.getPositionGlobal(); +        data.sim_name = region->getName(); + +        LLParcel* parcel = LLViewerParcelMgr::getInstance()->getAgentParcel(); +        if (parcel) +        { +            data.name = parcel->getName(); +            data.desc = parcel->getDesc(); +            data.snapshot_id = parcel->getSnapshotID(); +            data.parcel_id = parcel->getID(); +        } +        else +        { +            data.name = region->getName(); +        } + +        profilefloater->createPick(data); +    } +} + +// static  bool LLAvatarActions::isPickTabSelected(const LLUUID& avatar_id)  {      if (avatar_id.notNull()) @@ -406,6 +436,16 @@ void LLAvatarActions::showClassified(const LLUUID& avatar_id, const LLUUID& clas  	}  } +// static +void LLAvatarActions::createClassified() +{ +    LLFloaterProfile* profilefloater = dynamic_cast<LLFloaterProfile*>(LLFloaterReg::showInstance("profile", LLSD().with("id", gAgent.getID()))); +    if (profilefloater) +    { +        profilefloater->createClassified(); +    } +} +  //static   bool LLAvatarActions::profileVisible(const LLUUID& avatar_id)  { diff --git a/indra/newview/llavataractions.h b/indra/newview/llavataractions.h index f4eca1e92c..86183cc119 100644 --- a/indra/newview/llavataractions.h +++ b/indra/newview/llavataractions.h @@ -99,8 +99,10 @@ public:      static void showProfile(const LLUUID& avatar_id);      static void showPicks(const LLUUID& avatar_id);      static void showPick(const LLUUID& avatar_id, const LLUUID& pick_id); +    static void createPick();      static void showClassifieds(const LLUUID& avatar_id);      static void showClassified(const LLUUID& avatar_id, const LLUUID& classified_id, bool edit = false); +    static void createClassified();      static void hideProfile(const LLUUID& avatar_id);      static bool profileVisible(const LLUUID& avatar_id);      static bool isPickTabSelected(const LLUUID& avatar_id); diff --git a/indra/newview/llfloaterprofile.cpp b/indra/newview/llfloaterprofile.cpp index 624075e9fd..6ccdace6c5 100644 --- a/indra/newview/llfloaterprofile.cpp +++ b/indra/newview/llfloaterprofile.cpp @@ -156,6 +156,11 @@ void LLFloaterProfile::showClassified(const LLUUID& classified_id, bool edit)      mPanelProfile->showClassified(classified_id, edit);  } +void LLFloaterProfile::createClassified() +{ +    mPanelProfile->createClassified(); +} +  void LLFloaterProfile::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)  {      mNameCallbackConnection.disconnect(); diff --git a/indra/newview/llfloaterprofile.h b/indra/newview/llfloaterprofile.h index c2b90a1dce..b3ed02fc2c 100644 --- a/indra/newview/llfloaterprofile.h +++ b/indra/newview/llfloaterprofile.h @@ -52,6 +52,7 @@ public:      void refreshName();      void showClassified(const LLUUID& classified_id = LLUUID::null, bool edit = false); +    void createClassified();  private:      LLAvatarNameCache::callback_connection_t mNameCallbackConnection; diff --git a/indra/newview/llpanelprofile.cpp b/indra/newview/llpanelprofile.cpp index 2f4da59cfd..29c9329a26 100644 --- a/indra/newview/llpanelprofile.cpp +++ b/indra/newview/llpanelprofile.cpp @@ -2646,5 +2646,9 @@ void LLPanelProfile::showClassified(const LLUUID& classified_id, bool edit)      mTabContainer->selectTabPanel(mPanelClassifieds);  } - +void LLPanelProfile::createClassified() +{ +    mPanelClassifieds->createClassified(); +    mTabContainer->selectTabPanel(mPanelClassifieds); +} diff --git a/indra/newview/llpanelprofile.h b/indra/newview/llpanelprofile.h index 41533c137f..ca6ef3f794 100644 --- a/indra/newview/llpanelprofile.h +++ b/indra/newview/llpanelprofile.h @@ -382,6 +382,7 @@ public:      void commitUnsavedChanges() override;      void showClassified(const LLUUID& classified_id = LLUUID::null, bool edit = false); +    void createClassified();      LLAvatarData getAvatarData() { return mAvatarData; }; diff --git a/indra/newview/llpanelprofileclassifieds.cpp b/indra/newview/llpanelprofileclassifieds.cpp index bf8a67a03a..a3913ddc49 100644 --- a/indra/newview/llpanelprofileclassifieds.cpp +++ b/indra/newview/llpanelprofileclassifieds.cpp @@ -98,7 +98,7 @@ public:          // handle app/classified/create urls first          if (params.size() == 1 && params[0].asString() == "create")          { -            LLAvatarActions::showClassifieds(gAgent.getID()); +            LLAvatarActions::createClassified();              return true;          } @@ -199,6 +199,7 @@ LLPanelProfileClassifieds::LLPanelProfileClassifieds()   : LLPanelProfilePropertiesProcessorTab()   , mClassifiedToSelectOnLoad(LLUUID::null)   , mClassifiedEditOnLoad(false) + , mSheduledClassifiedCreation(false)  {  } @@ -254,6 +255,26 @@ void LLPanelProfileClassifieds::selectClassified(const LLUUID& classified_id, bo      }  } +void LLPanelProfileClassifieds::createClassified() +{ +    if (getIsLoaded()) +    { +        mNoItemsLabel->setVisible(FALSE); +        LLPanelProfileClassified* classified_panel = LLPanelProfileClassified::create(); +        classified_panel->onOpen(LLSD()); +        mTabContainer->addTabPanel( +            LLTabContainer::TabPanelParams(). +            panel(classified_panel). +            select_tab(true). +            label(classified_panel->getClassifiedName())); +        updateButtons(); +    } +    else +    { +        mSheduledClassifiedCreation = true; +    } +} +  BOOL LLPanelProfileClassifieds::postBuild()  {      mTabContainer = getChild<LLTabContainer>("tab_classifieds"); @@ -335,6 +356,7 @@ void LLPanelProfileClassifieds::processProperties(void* data, EAvatarProcessorTy              // do not clear classified list in case we will receive two or more data packets.              // list has been cleared in updateData(). (fix for EXT-6436)              LLUUID selected_id = mClassifiedToSelectOnLoad; +            bool has_selection = false;              LLAvatarClassifieds::classifieds_list_t::const_iterator it = c_info->classifieds_list.begin();              for (; c_info->classifieds_list.end() != it; ++it) @@ -359,11 +381,27 @@ void LLPanelProfileClassifieds::processProperties(void* data, EAvatarProcessorTy                  if (selected_id == c_data.classified_id)                  { -                    mClassifiedToSelectOnLoad = LLUUID::null; -                    mClassifiedEditOnLoad = false; +                    has_selection = true;                  }              } +            if (mSheduledClassifiedCreation) +            { +                LLPanelProfileClassified* classified_panel = LLPanelProfileClassified::create(); +                classified_panel->onOpen(LLSD()); +                mTabContainer->addTabPanel( +                    LLTabContainer::TabPanelParams(). +                    panel(classified_panel). +                    select_tab(!has_selection). +                    label(classified_panel->getClassifiedName())); +                has_selection = true; +            } + +            // reset 'do on load' values +            mClassifiedToSelectOnLoad = LLUUID::null; +            mClassifiedEditOnLoad = false; +            mSheduledClassifiedCreation = false; +              // set even if not visible, user might delete own              // calassified and this string will need to be shown              if (getSelfProfile()) @@ -377,7 +415,7 @@ void LLPanelProfileClassifieds::processProperties(void* data, EAvatarProcessorTy              bool has_data = mTabContainer->getTabCount() > 0;              mNoItemsLabel->setVisible(!has_data); -            if (has_data && selected_id.isNull()) +            if (has_data && !has_selection)              {                  mTabContainer->selectFirstTab();              } diff --git a/indra/newview/llpanelprofileclassifieds.h b/indra/newview/llpanelprofileclassifieds.h index 9a9f2185e8..912819e86b 100644 --- a/indra/newview/llpanelprofileclassifieds.h +++ b/indra/newview/llpanelprofileclassifieds.h @@ -80,6 +80,8 @@ public:      void selectClassified(const LLUUID& classified_id, bool edit); +    void createClassified(); +      void processProperties(void* data, EAvatarProcessorType type) override;      void resetData() override; @@ -108,6 +110,7 @@ private:      LLUUID          mClassifiedToSelectOnLoad;      bool            mClassifiedEditOnLoad; +    bool            mSheduledClassifiedCreation;  }; diff --git a/indra/newview/llpanelprofilepicks.cpp b/indra/newview/llpanelprofilepicks.cpp index cf693f41b2..774119f169 100644 --- a/indra/newview/llpanelprofilepicks.cpp +++ b/indra/newview/llpanelprofilepicks.cpp @@ -77,10 +77,10 @@ public:              return true;          } -        // handle app/classified/create urls first +        // handle app/pick/create urls first          if (params.size() == 1 && params[0].asString() == "create")          { -            LLAvatarActions::showPicks(gAgent.getID()); +            LLAvatarActions::createPick();              return true;          } @@ -317,7 +317,6 @@ void LLPanelProfilePicks::processProperties(const LLAvatarPicks* avatar_picks)          if (selected_id == pick_id)          { -            mPickToSelectOnLoad = LLUUID::null;              has_selection = true;          }      } @@ -340,6 +339,8 @@ void LLPanelProfilePicks::processProperties(const LLAvatarPicks* avatar_picks)          has_selection = true;      } +    // reset 'do on load' values +    mPickToSelectOnLoad = LLUUID::null;      mSheduledPickCreation.clear();      if (getSelfProfile()) | 
