diff options
Diffstat (limited to 'indra/newview/llpanelexperiences.cpp')
| -rw-r--r-- | indra/newview/llpanelexperiences.cpp | 265 |
1 files changed, 26 insertions, 239 deletions
diff --git a/indra/newview/llpanelexperiences.cpp b/indra/newview/llpanelexperiences.cpp index 617ceef615..0d7cdce6e8 100644 --- a/indra/newview/llpanelexperiences.cpp +++ b/indra/newview/llpanelexperiences.cpp @@ -7,82 +7,18 @@ #include "llagent.h" #include "llpanelexperiences.h" +#include "llslurl.h" static LLRegisterPanelClassWrapper<LLPanelExperiences> register_experiences_panel("experiences_panel"); LLPanelExperiences::LLPanelExperiences( ) - : mExperiencesList(NULL), - mExperiencesAccTab(NULL), - mProfilePanel(NULL), - mPanelExperienceInfo(NULL), - mNoExperiences(false) + : mExperiencesList(NULL) { - -} - -void* LLPanelExperiences::create( void* data ) -{ - return new LLPanelExperiences(); -} - -void ExperienceResult(LLHandle<LLPanelExperiences> panel, const LLSD& experience) -{ - LLPanelExperiences* experiencePanel = panel.get(); - if(experiencePanel) - { - experiencePanel->addExperienceInfo(experience); - } -} - -class LLExperienceListResponder : public LLHTTPClient::Responder -{ -public: - LLExperienceListResponder(const LLHandle<LLPanelExperiences>& parent):mParent(parent) - { - } - - LLHandle<LLPanelExperiences> mParent; - - virtual void result(const LLSD& content) - { - if(mParent.isDead()) - return; - - LLSD experiences = content["experiences"]; - LLSD::array_const_iterator it = experiences.beginArray(); - for( /**/ ; it != experiences.endArray(); ++it) - { - LLUUID public_key = it->asUUID(); - - LLExperienceCache::get(public_key, boost::bind(ExperienceResult, mParent, _1)); - } - } -}; - -void LLPanelExperiences::addExperienceInfo(const LLSD& experience) -{ - LLExperienceItem* item = new LLExperienceItem(); - if(experience.has(LLExperienceCache::NAME)) - { - item->setExperienceName(experience[LLExperienceCache::NAME].asString()); - } - else if(experience.has("error")) - { - item->setExperienceName(experience["error"].asString()); - } - - if(experience.has(LLExperienceCache::DESCRIPTION)) - { - item->setExperienceDescription(experience[LLExperienceCache::DESCRIPTION].asString()); - } - - mExperiencesList->addItem(item); - + buildFromFile("panel_experiences.xml"); } - BOOL LLPanelExperiences::postBuild( void ) { mExperiencesList = getChild<LLFlatListView>("experiences_list"); @@ -91,44 +27,10 @@ BOOL LLPanelExperiences::postBuild( void ) mExperiencesList->setNoItemsCommentText(getString("no_experiences")); } - - LLViewerRegion* region = gAgent.getRegion(); - if (region) - { - std::string lookup_url=region->getCapability("GetExperiences"); - if(!lookup_url.empty()) - { - LLHTTPClient::get(lookup_url, new LLExperienceListResponder(getDerivedHandle<LLPanelExperiences>())); - } - } - - mExperiencesAccTab = getChild<LLAccordionCtrlTab>("tab_experiences"); - mExperiencesAccTab->setDropDownStateChangedCallback(boost::bind(&LLPanelExperiences::onAccordionStateChanged, this, mExperiencesAccTab)); - mExperiencesAccTab->setDisplayChildren(true); - return TRUE; } -void LLPanelExperiences::onOpen( const LLSD& key ) -{ - LLPanel::onOpen(key); -} -void LLPanelExperiences::onClosePanel() -{ - if (mPanelExperienceInfo) - { - onPanelExperienceClose(mPanelExperienceInfo); - } -} - -void LLPanelExperiences::updateData() -{ - if(isDirty()) - { - mNoExperiences = false; - } -} LLExperienceItem* LLPanelExperiences::getSelectedExperienceItem() { @@ -138,165 +40,50 @@ LLExperienceItem* LLPanelExperiences::getSelectedExperienceItem() return dynamic_cast<LLExperienceItem*>(selected_item); } -void LLPanelExperiences::setProfilePanel( LLPanelProfile* profile_panel ) -{ - mProfilePanel = profile_panel; -} - -void LLPanelExperiences::onListCommit( const LLFlatListView* f_list ) -{ - if(f_list == mExperiencesList) - { - mExperiencesList->resetSelection(true); - } - else - { - llwarns << "Unknown list" << llendl; - } - - //updateButtons(); -} - -void LLPanelExperiences::onAccordionStateChanged( const LLAccordionCtrlTab* acc_tab ) -{ - if(!mExperiencesAccTab->getDisplayChildren()) - { - mExperiencesList->resetSelection(true); - } - -} - -void LLPanelExperiences::openExperienceInfo() +void LLPanelExperiences::setExperienceList( const LLSD& experiences ) { - LLSD selected_value = mExperiencesList->getSelectedValue(); - if(selected_value.isUndefined()) - { - return; - } - - LLExperienceItem* experience = (LLExperienceItem*)mExperiencesList->getSelectedItem(); - - createExperienceInfoPanel(); + mExperiencesList->clear(); - LLSD params; - params["experience_name"] = experience->getExperienceName(); - params["experience_desc"] = experience->getExperienceDescription(); + LLSD::array_const_iterator it = experiences.beginArray(); + for( /**/ ; it != experiences.endArray(); ++it) + { + LLUUID public_key = it->asUUID(); + LLExperienceItem* item = new LLExperienceItem(); - getProfilePanel()->openPanel(mPanelExperienceInfo, params); - -} - - -void LLPanelExperiences::createExperienceInfoPanel() -{ - if(!mPanelExperienceInfo) - { - mPanelExperienceInfo = LLPanelExperienceInfo::create(); - mPanelExperienceInfo->setExitCallback(boost::bind(&LLPanelExperiences::onPanelExperienceClose, this, mPanelExperienceInfo)); - mPanelExperienceInfo->setVisible(FALSE); - } + item->init(public_key); + mExperiencesList->addItem(item, public_key); + } } -void LLPanelExperiences::onPanelExperienceClose( LLPanel* panel ) +LLPanelExperiences* LLPanelExperiences::create(const std::string& name) { - getProfilePanel()->closePanel(panel); + LLPanelExperiences* panel= new LLPanelExperiences(); + panel->setName(name); + return panel; } -LLPanelProfile* LLPanelExperiences::getProfilePanel() +void LLPanelExperiences::removeExperiences( const LLSD& ids ) { - llassert_always(NULL != mProfilePanel); - - return mProfilePanel; + LLSD::array_const_iterator it = ids.beginArray(); + for( /**/ ; it != ids.endArray(); ++it) + { + mExperiencesList->removeItemByUUID(it->asUUID()); + } } - - - - - - - - - LLExperienceItem::LLExperienceItem() { - buildFromFile("panel_experience_info.xml"); -} - -void LLExperienceItem::init( LLSD* experience_data ) -{ - if(experience_data) - { - setExperienceDescription(experience_data->has(LLExperienceCache::DESCRIPTION)?(*experience_data)[LLExperienceCache::DESCRIPTION].asString() : std::string()); - setExperienceName(experience_data->has(LLExperienceCache::NAME)?(*experience_data)[LLExperienceCache::NAME].asString() : std::string()); - } -} - -void LLExperienceItem::setExperienceDescription( const std::string& val ) -{ - mExperienceDescription = val; - getChild<LLUICtrl>("experience_desc")->setValue(val); -} - -void LLExperienceItem::setExperienceName( const std::string& val ) -{ - mExperienceName = val; - getChild<LLUICtrl>("experience_name")->setValue(val); + buildFromFile("panel_experience_list_item.xml"); } -BOOL LLExperienceItem::postBuild() +void LLExperienceItem::init( const LLUUID& id) { - return TRUE; + getChild<LLUICtrl>("experience_name")->setValue(LLSLURL("experience", id, "profile").getSLURLString()); } -void LLExperienceItem::update() -{ - -} - -void LLExperienceItem::processProperties( void* data, EAvatarProcessorType type ) -{ - -} LLExperienceItem::~LLExperienceItem() { } - - -void LLPanelExperienceInfo::setExperienceName( const std::string& name ) -{ - getChild<LLUICtrl>("experience_name")->setValue(name); -} - -void LLPanelExperienceInfo::setExperienceDesc( const std::string& desc ) -{ - getChild<LLUICtrl>("experience_desc")->setValue(desc); -} - -void LLPanelExperienceInfo::onOpen( const LLSD& key ) -{ - setExperienceName(key["experience_name"]); - setExperienceDesc(key["experience_desc"]); - - /* - LLAvatarPropertiesProcessor::getInstance()->addObserver( - getAvatarId(), this); - LLAvatarPropertiesProcessor::getInstance()->sendPickInfoRequest( - getAvatarId(), getPickId()); - */ -} - -LLPanelExperienceInfo* LLPanelExperienceInfo::create() -{ - LLPanelExperienceInfo* panel = new LLPanelExperienceInfo(); - panel->buildFromFile("panel_experience_info.xml"); - return panel; -} - -void LLPanelExperienceInfo::setExitCallback( const commit_callback_t& cb ) -{ - getChild<LLButton>("back_btn")->setClickedCallback(cb); -} |
