// to work correctly this method should be called AFTER setAvatarId for avaline callers with hidden phone number void LLAvalineListItem::setName(const std::string& name) { if (mIsHideNumber) { static U32 order = 0; typedef std::map<LLUUID, U32> avaline_callers_nums_t; static avaline_callers_nums_t mAvalineCallersNums; llassert(getAvatarId() != LLUUID::null); const LLUUID &uuid = getAvatarId(); if (mAvalineCallersNums.find(uuid) == mAvalineCallersNums.end()) { mAvalineCallersNums[uuid] = ++order; LL_DEBUGS("Avaline") << "Set name for new avaline caller: " << uuid << ", order: " << order << LL_ENDL; } LLStringUtil::format_map_t args; args["[ORDER]"] = llformat("%u", mAvalineCallersNums[uuid]); std::string hidden_name = LLTrans::getString("AvalineCaller", args); LL_DEBUGS("Avaline") << "Avaline caller: " << uuid << ", name: " << hidden_name << LL_ENDL; LLAvatarListItem::setAvatarName(hidden_name); LLAvatarListItem::setAvatarToolTip(hidden_name); } else { const std::string& formatted_phone = LLTextUtil::formatPhoneNumber(name); LLAvatarListItem::setAvatarName(formatted_phone); LLAvatarListItem::setAvatarToolTip(formatted_phone); } }
void FSPanelClassifieds::onOpen(const LLSD& key) { const LLUUID id(key.asUUID()); BOOL self = (gAgent.getID() == id); // only agent can edit her picks getChildView("edit_panel")->setEnabled(self); getChildView("edit_panel")->setVisible( self); // Disable buttons when viewing profile for first time if(getAvatarId() != id) { getChildView(XML_BTN_INFO)->setEnabled(FALSE); getChildView(XML_BTN_TELEPORT)->setEnabled(FALSE); getChildView(XML_BTN_SHOW_ON_MAP)->setEnabled(FALSE); } if(getAvatarId() != id) { mClassifiedsList->goToTop(); // Set dummy value to make panel dirty and make it reload picks setValue(LLSD()); } FSPanelProfileTab::onOpen(key); updateData(); updateButtons(); }
/*virtual*/ void LLPanelProfileView::onOpen(const LLSD& key) { LLUUID id; if(key.has("id")) { id = key["id"]; } if(id.notNull() && getAvatarId() != id) { setAvatarId(id); getChild<LLUICtrl>("agent_id")->setValue(id); // S21 // clear name fields, which might have old data getChild<LLUICtrl>("user_name")->setValue( LLSD() ); getChild<LLUICtrl>("user_slid")->setValue( LLSD() ); } // Update the avatar name. LLAvatarNameCache::get(getAvatarId(), boost::bind(&LLPanelProfileView::onAvatarNameCache, this, _1, _2)); updateOnlineStatus(); LLPanelProfile::onOpen(key); }
void LLPanelPickInfo::onOpen(const LLSD& key) { LLUUID avatar_id = key["avatar_id"]; if(avatar_id.isNull()) { return; } if(getAvatarId().notNull()) { LLAvatarPropertiesProcessor::getInstance()->removeObserver( getAvatarId(), this); } setAvatarId(avatar_id); resetData(); resetControls(); setPickId(key["pick_id"]); setPickName(key["pick_name"]); setPickDesc(key["pick_desc"]); setSnapshotId(key["snapshot_id"]); LLAvatarPropertiesProcessor::getInstance()->addObserver( getAvatarId(), this); LLAvatarPropertiesProcessor::getInstance()->sendPickInfoRequest( getAvatarId(), getPickId()); }
LLPanelPicks::~LLPanelPicks() { if(getAvatarId().notNull()) { LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); } }
FSPanelClassifieds::~FSPanelClassifieds() { if(getAvatarId().notNull()) { LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); } }
bool LLPanelAvatarProfile::enableShowOnMap() { bool is_buddy_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId()); bool enable_map_btn = (is_buddy_online && is_agent_mappable(getAvatarId())) || gAgent.isGodlike(); return enable_map_btn; }
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 LLPanelAvatarProfile::updateData() { if (getAvatarId().notNull()) { LLAvatarPropertiesProcessor::getInstance()-> sendAvatarPropertiesRequest(getAvatarId()); LLAvatarPropertiesProcessor::getInstance()-> sendAvatarGroupsRequest(getAvatarId()); } }
LLPanelClassifiedInfo::~LLPanelClassifiedInfo() { sAllPanels.remove(this); // [SL:KB] - Patch : UI-ProfileGroupFloater | Checked: 2010-11-28 (Catznip-2.4.0g) | Added: Catznip-2.4.0g if(getAvatarId().notNull()) { LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this); } // [/SL:KB] }
LLPanelAvatarProfile::~LLPanelAvatarProfile() { if(getAvatarId().notNull()) { LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this); if(LLVoiceClient::instanceExists()) { LLVoiceClient::getInstance()->removeObserver((LLVoiceClientStatusObserver*)this); } } }
void LLPanelAvatarProfile::setAvatarId(const LLUUID& id) { if(id.notNull()) { if(getAvatarId().notNull()) { LLAvatarTracker::instance().removeParticularFriendObserver(getAvatarId(), this); } LLPanelProfileTab::setAvatarId(id); LLAvatarTracker::instance().addParticularFriendObserver(getAvatarId(), this); } }
void LLPanelProfileTab::setAvatarId(const LLUUID& id) { if(id.notNull()) { if(getAvatarId().notNull()) { LLAvatarPropertiesProcessor::getInstance()->removeObserver(mAvatarId,this); } mAvatarId = id; LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(),this); } }
void LLPanelAvatarNotes::processProperties(void* data, EAvatarProcessorType type) { if(APT_NOTES == type) { LLAvatarNotes* avatar_notes = static_cast<LLAvatarNotes*>(data); if(avatar_notes && getAvatarId() == avatar_notes->target_id) { childSetValue("notes_edit",avatar_notes->notes); childSetEnabled("notes edit", true); LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); } } }
void LLPanelMyProfileEdit::processProperties(void* data, EAvatarProcessorType type) { if(APT_PROPERTIES == type) { const LLAvatarData* avatar_data = static_cast<const LLAvatarData*>(data); if(avatar_data && getAvatarId() == avatar_data->avatar_id) { // *TODO dzaporozhan // Workaround for ticket EXT-1099, waiting for fix for ticket EXT-1128 enableEditing(true); processProfileProperties(avatar_data); LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(),this); } } }
void LLPanelClassifiedInfo::onOpen(const LLSD& key) { LLUUID avatar_id = key["classified_creator_id"]; if(avatar_id.isNull()) { return; } if(getAvatarId().notNull()) { LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this); } setAvatarId(avatar_id); resetData(); resetControls(); scrollToTop(); setClassifiedId(key["classified_id"]); setClassifiedName(key["classified_name"]); setDescription(key["classified_desc"]); setSnapshotId(key["classified_snapshot_id"]); setFromSearch(key["from_search"]); LL_INFOS() << "Opening classified [" << getClassifiedName() << "] (" << getClassifiedId() << ")" << LL_ENDL; LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(), this); LLAvatarPropertiesProcessor::getInstance()->sendClassifiedInfoRequest(getClassifiedId()); gGenericDispatcher.addHandler("classifiedclickthrough", &sClassifiedClickThrough); // While we're at it let's get the stats from the new table if that // capability exists. std::string url = gAgent.getRegion()->getCapability("SearchStatRequest"); if (!url.empty()) { LL_INFOS() << "Classified stat request via capability" << LL_ENDL; LLSD body; body["classified_id"] = getClassifiedId(); LLHTTPClient::post(url, body, new LLClassifiedStatsResponder(getClassifiedId())); } // Update classified click stats. // *TODO: Should we do this when opening not from search? sendClickMessage("profile"); setInfoLoaded(false); }
void LLPanelClassifiedEdit::onOpen(const LLSD& key) { mIsNew = key.isUndefined(); scrollToTop(); // classified is not created yet bool is_new = isNew() || isNewWithErrors(); if(is_new) { resetData(); resetControls(); fillIn(key); if(isNew()) { LLAvatarPropertiesProcessor::getInstance()->addObserver(getAvatarId(), this); } } else { LLPanelClassifiedInfo::onOpen(key); } std::string save_btn_label = is_new ? getString("publish_label") : getString("save_label"); getChild<LLUICtrl>("save_changes_btn")->setLabelArg("[LABEL]", save_btn_label); enableVerbs(is_new); enableEditing(is_new); showEditing(!is_new); resetDirty(); setInfoLoaded(false); }
// method was disabled according to EXT-2022. Re-enabled & improved according to EXT-3880 void LLPanelProfileView::updateOnlineStatus() { // set text box visible to show online status for non-friends who has not set in Preferences // "Only Friends & Groups can see when I am online" mStatusText->setVisible(TRUE); const LLRelationship* relationship = LLAvatarTracker::instance().getBuddyInfo(getAvatarId()); if (NULL == relationship) { // this is non-friend avatar. Status will be updated from LLAvatarPropertiesProcessor. // in LLPanelProfileView::processOnlineStatus() // subscribe observer to get online status. Request will be sent by LLPanelAvatarProfile itself. // do not subscribe for friend avatar because online status can be wrong overridden // via LLAvatarData::flags if Preferences: "Only Friends & Groups can see when I am online" is set. mAvatarStatusObserver->subscribe(); return; } // For friend let check if he allowed me to see his status // status should only show if viewer has permission to view online/offline. EXT-453, EXT-3880 mStatusText->setVisible(isGrantedToSeeOnlineStatus()); bool online = relationship->isOnline(); processOnlineStatus(online); }
void LLPanelPickInfo::processProperties(void* data, EAvatarProcessorType type) { if(APT_PICK_INFO != type) { return; } LLPickData* pick_info = static_cast<LLPickData*>(data); if(!pick_info || pick_info->creator_id != getAvatarId() || pick_info->pick_id != getPickId()) { return; } mParcelId = pick_info->parcel_id; setSnapshotId(pick_info->snapshot_id); setPickName(pick_info->name); setPickDesc(pick_info->desc); setPosGlobal(pick_info->pos_global); // Send remote parcel info request to get parcel name and sim (region) name. sendParcelInfoRequest(); // *NOTE dzaporozhan // We want to keep listening to APT_PICK_INFO because user may // edit the Pick and we have to update Pick info panel. // revomeObserver is called from onClickBack }
// virtual, called by LLAvatarTracker void LLPanelAvatarNotes::changed(U32 mask) { childSetEnabled("teleport", LLAvatarTracker::instance().isBuddyOnline(getAvatarId())); // update rights to avoid have checkboxes enabled when friendship is terminated. EXT-4947. fillRightsData(); }
void LLPanelProfile::onOpen(const LLSD& key) { getTabContainer()[PANEL_PICKS]->onOpen(getAvatarId()); // support commands to open further pieces of UI if (key.has("show_tab_panel")) { std::string panel = key["show_tab_panel"].asString(); if (panel == "create_classified") { LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); if (picks) { picks->createNewClassified(); } } else if (panel == "classified_details") { LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); if (picks) { LLSD params = key; params.erase("show_tab_panel"); params.erase("open_tab_name"); picks->openClassifiedInfo(params); } } else if (panel == "edit_classified") { LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); if (picks) { LLSD params = key; params.erase("show_tab_panel"); params.erase("open_tab_name"); picks->openClassifiedEdit(params); } } else if (panel == "create_pick") { LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); if (picks) { picks->createNewPick(); } } else if (panel == "edit_pick") { LLPanelPicks* picks = dynamic_cast<LLPanelPicks *>(getTabContainer()[PANEL_PICKS]); if (picks) { LLSD params = key; params.erase("show_tab_panel"); params.erase("open_tab_name"); picks->openPickEdit(params); } } } }
void LLPanelMyProfileEdit::onClickSetName() { LLAvatarNameCache::get(getAvatarId(), boost::bind(&LLPanelMyProfileEdit::onAvatarNameCache, this, _1, _2)); LLFirstUse::setDisplayName(false); }
void LLPanelProfile::onTabSelected(const LLSD& param) { std::string tab_name = param.asString(); if (NULL != getTabContainer()[tab_name]) { getTabContainer()[tab_name]->onOpen(getAvatarId()); } }
void LLPanelClassifiedInfo::resetControls() { bool is_self = getAvatarId() == gAgent.getID(); getChildView("edit_btn")->setEnabled(is_self); getChildView("edit_btn")->setVisible( is_self); getChildView("price_layout_panel")->setVisible( is_self); getChildView("clickthrough_layout_panel")->setVisible( is_self); }
void LLPanelPicks::updateData() { // Send Picks request only when we need to, not on every onOpen(during tab switch). if(isDirty()) { mNoPicks = false; mNoClassifieds = false; mNoItemsLabel->setValue(LLTrans::getString("PicksClassifiedsLoadingText")); mNoItemsLabel->setVisible(TRUE); mPicksList->clear(); LLAvatarPropertiesProcessor::getInstance()->sendAvatarPicksRequest(getAvatarId()); mClassifiedsList->clear(); LLAvatarPropertiesProcessor::getInstance()->sendAvatarClassifiedsRequest(getAvatarId()); } }
void LLPanelProfileTab::updateButtons() { bool is_buddy_online = LLAvatarTracker::instance().isBuddyOnline(getAvatarId()); if(LLAvatarActions::isFriend(getAvatarId())) { childSetEnabled("teleport", is_buddy_online); } else { childSetEnabled("teleport", true); } bool enable_map_btn = (is_buddy_online && is_agent_mappable(getAvatarId())) || gAgent.isGodlike(); childSetEnabled("show_on_map_btn", enable_map_btn); }
void LLPanelAvatarProfile::onOpen(const LLSD& key) { LLPanelProfileTab::onOpen(key); mGroups.clear(); //Disable "Add Friend" button for friends. childSetEnabled("add_friend", !LLAvatarActions::isFriend(getAvatarId())); }
LLPanelPickInfo::~LLPanelPickInfo() { LLAvatarPropertiesProcessor::getInstance()->removeObserver(getAvatarId(), this); if (mParcelId.notNull()) { LLRemoteParcelInfoProcessor::getInstance()->removeObserver(mParcelId, this); } }
void LLPanelMyProfileEdit::onOpen(const LLSD& key) { resetData(); // Disable editing until data is loaded, or edited fields will be overwritten when data // is loaded. enableEditing(false); LLPanelMyProfile::onOpen(getAvatarId()); }
void onObjectIconContextMenuItemClicked(const LLSD& userdata) { std::string level = userdata.asString(); if (level == "profile") { LLSD params; params["object_id"] = getAvatarId(); LLFloaterReg::showInstance("inspect_object", params); } else if (level == "block") { LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT)); LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId())); } }