void LLPanelPicks::editClassified(const LLUUID& classified_id) { LLClassifiedItem* c_item = findClassifiedById(classified_id); if (!c_item) { LL_WARNS() << "item not found for classified_id " << classified_id << LL_ENDL; return; } LLSD params; params["classified_id"] = c_item->getClassifiedId(); params["classified_creator_id"] = c_item->getAvatarId(); params["snapshot_id"] = c_item->getSnapshotId(); params["name"] = c_item->getClassifiedName(); params["desc"] = c_item->getDescription(); params["category"] = (S32)c_item->getCategory(); params["content_type"] = (S32)c_item->getContentType(); params["auto_renew"] = c_item->getAutoRenew(); params["price_for_listing"] = c_item->getPriceForListing(); params["location_text"] = c_item->getLocationText(); LLPanelClassifiedEdit* panel = mEditClassifiedPanels[c_item->getClassifiedId()]; if(!panel) { createClassifiedEditPanel(&panel); mEditClassifiedPanels[c_item->getClassifiedId()] = panel; } getProfilePanel()->openPanel(panel, params); panel->setPosGlobal(c_item->getPosGlobal()); }
void FSPanelClassifieds::processProperties(void* data, EAvatarProcessorType type) { if(APT_CLASSIFIEDS == type) { LLAvatarClassifieds* c_info = static_cast<LLAvatarClassifieds*>(data); if(c_info && getAvatarId() == c_info->target_id) { // 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) LLAvatarClassifieds::classifieds_list_t::const_iterator it = c_info->classifieds_list.begin(); for(; c_info->classifieds_list.end() != it; ++it) { LLAvatarClassifieds::classified_data c_data = *it; FSClassifiedItem* c_item = new FSClassifiedItem(getAvatarId(), c_data.classified_id); c_item->childSetAction("info_chevron", boost::bind(&FSPanelClassifieds::onClickInfo, this)); c_item->setClassifiedName(c_data.name); LLSD pick_value = LLSD(); pick_value.insert(CLASSIFIED_ID, c_data.classified_id); pick_value.insert(CLASSIFIED_NAME, c_data.name); if (!findClassifiedById(c_data.classified_id)) { mClassifiedsList->addItem(c_item, pick_value); } c_item->setDoubleClickCallback(boost::bind(&FSPanelClassifieds::onDoubleClickClassifiedItem, this, _1)); c_item->setRightMouseUpCallback(boost::bind(&FSPanelClassifieds::onRightMouseUpItem, this, _1, _2, _3, _4)); c_item->setMouseUpCallback(boost::bind(&FSPanelClassifieds::updateButtons, this)); } resetDirty(); updateButtons(); } mNoClassifieds = !mClassifiedsList->size(); bool no_data = mNoClassifieds; mNoItemsLabel->setVisible(no_data); if (no_data) { if(getAvatarId() == gAgentID) { mNoItemsLabel->setValue(LLTrans::getString("NoClassifiedsText")); } else { mNoItemsLabel->setValue(LLTrans::getString("NoAvatarClassifiedsText")); } } enableControls(); } }
void LLPanelPicks::processProperties(void* data, EAvatarProcessorType type) { if(APT_PICKS == type) { LLAvatarPicks* avatar_picks = static_cast<LLAvatarPicks*>(data); if(avatar_picks && getAvatarId() == avatar_picks->target_id) { std::string full_name; gCacheName->getFullName(getAvatarId(), full_name); getChild<LLUICtrl>("pick_title")->setTextArg("[NAME]", full_name); // Save selection, to be able to edit same item after saving changes. See EXT-3023. LLUUID selected_id = mPicksList->getSelectedValue()[PICK_ID]; mPicksList->clear(); LLAvatarPicks::picks_list_t::const_iterator it = avatar_picks->picks_list.begin(); for(; avatar_picks->picks_list.end() != it; ++it) { LLUUID pick_id = it->first; std::string pick_name = it->second; LLPickItem* picture = LLPickItem::create(); picture->childSetAction("info_chevron", boost::bind(&LLPanelPicks::onClickInfo, this)); picture->setPickName(pick_name); picture->setPickId(pick_id); picture->setCreatorId(getAvatarId()); LLAvatarPropertiesProcessor::instance().addObserver(getAvatarId(), picture); picture->update(); LLSD pick_value = LLSD(); pick_value.insert(PICK_ID, pick_id); pick_value.insert(PICK_NAME, pick_name); pick_value.insert(PICK_CREATOR_ID, getAvatarId()); mPicksList->addItem(picture, pick_value); // Restore selection by item id. if ( pick_id == selected_id ) mPicksList->selectItemByValue(pick_value); picture->setDoubleClickCallback(boost::bind(&LLPanelPicks::onDoubleClickPickItem, this, _1)); picture->setRightMouseUpCallback(boost::bind(&LLPanelPicks::onRightMouseUpItem, this, _1, _2, _3, _4)); picture->setMouseUpCallback(boost::bind(&LLPanelPicks::updateButtons, this)); } showAccordion("tab_picks", mPicksList->size()); resetDirty(); updateButtons(); } mNoPicks = !mPicksList->size(); } else if((APT_CLASSIFIEDS == type) || (APT_CLASSIFIED_INFO == type)) { LLAvatarClassifieds* c_info = static_cast<LLAvatarClassifieds*>(data); if(c_info && getAvatarId() == c_info->target_id) { // 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) LLAvatarClassifieds::classifieds_list_t::const_iterator it = c_info->classifieds_list.begin(); for(; c_info->classifieds_list.end() != it; ++it) { LLAvatarClassifieds::classified_data c_data = *it; LLClassifiedItem* c_item = new LLClassifiedItem(getAvatarId(), c_data.classified_id); c_item->childSetAction("info_chevron", boost::bind(&LLPanelPicks::onClickInfo, this)); c_item->setClassifiedName(c_data.name); LLSD pick_value = LLSD(); pick_value.insert(CLASSIFIED_ID, c_data.classified_id); pick_value.insert(CLASSIFIED_NAME, c_data.name); if (!findClassifiedById(c_data.classified_id)) { mClassifiedsList->addItem(c_item, pick_value); } c_item->setDoubleClickCallback(boost::bind(&LLPanelPicks::onDoubleClickClassifiedItem, this, _1)); c_item->setRightMouseUpCallback(boost::bind(&LLPanelPicks::onRightMouseUpItem, this, _1, _2, _3, _4)); c_item->setMouseUpCallback(boost::bind(&LLPanelPicks::updateButtons, this)); } showAccordion("tab_classifieds", mClassifiedsList->size()); resetDirty(); updateButtons(); } mNoClassifieds = !mClassifiedsList->size(); } bool no_data = mNoPicks && mNoClassifieds; mNoItemsLabel->setVisible(no_data); if (no_data) { if(getAvatarId() == gAgentID) { mNoItemsLabel->setValue(LLTrans::getString("NoPicksClassifiedsText")); } else { mNoItemsLabel->setValue(LLTrans::getString("NoAvatarPicksClassifiedsText")); } } }