// static void LLPanelGroupGeneral::onClickCopyLink(void* userdata) { LLPanelGroupGeneral* self = (LLPanelGroupGeneral*)userdata; if (!self || (self->mGroupID).isNull()) return; LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(self->mGroupID); // make sure we don't have junk if (gdatap) { std::string buffer = LLURLDispatcher::createGroupJoinLink(gdatap->getID()); // Say same info in chat -- MC LLStringUtil::format_map_t targs; targs["[IZURL]"] = buffer; std::string msg = self->getString("copy_group_link_info"); LLStringUtil::format(msg, targs); LLChat chat; chat.mSourceType = CHAT_SOURCE_SYSTEM; chat.mText = msg; LLFloaterChat::addChat(chat); gViewerWindow->mWindow->copyTextToClipboard(utf8str_to_wstring(buffer)); } else { llwarns << "Trying to copy group izurl link with no group data!" << llendl; } }
// virtual void LLPanelGroupGeneral::update(LLGroupChange gc) { if (mGroupID.isNull()) return; LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); if (!gdatap) return; LLGroupData agent_gdatap; bool is_member = false; if (gAgent.getGroupData(mGroupID,agent_gdatap)) is_member = true; if (mComboActiveTitle) { mComboActiveTitle->setVisible(is_member); if ( mActiveTitleLabel) mActiveTitleLabel->setVisible(is_member); if (is_member) { LLUUID current_title_role; mComboActiveTitle->clear(); mComboActiveTitle->removeall(); bool has_selected_title = false; if (1 == gdatap->mTitles.size()) { // Only the everyone title. Don't bother letting them try changing this. mComboActiveTitle->setEnabled(FALSE); } else { mComboActiveTitle->setEnabled(TRUE); } std::vector<LLGroupTitle>::const_iterator citer = gdatap->mTitles.begin(); std::vector<LLGroupTitle>::const_iterator end = gdatap->mTitles.end(); for ( ; citer != end; ++citer) { mComboActiveTitle->add(citer->mTitle,citer->mRoleID, (citer->mSelected ? ADD_TOP : ADD_BOTTOM)); if (citer->mSelected) { mComboActiveTitle->setCurrentByID(citer->mRoleID); has_selected_title = true; } } if (!has_selected_title) { mComboActiveTitle->setCurrentByID(LLUUID::null); } } mComboActiveTitle->resetDirty(); } // After role member data was changed in Roles->Members // need to update role titles. See STORM-918. if (gc == GC_ROLE_MEMBER_DATA) LLGroupMgr::getInstance()->sendGroupTitlesRequest(mGroupID); // If this was just a titles update, we are done. if (gc == GC_TITLES) return; bool can_change_ident = false; bool can_change_member_opts = false; can_change_ident = gAgent.hasPowerInGroup(mGroupID,GP_GROUP_CHANGE_IDENTITY); can_change_member_opts = gAgent.hasPowerInGroup(mGroupID,GP_MEMBER_OPTIONS); if (mCtrlShowInGroupList) { mCtrlShowInGroupList->set(gdatap->mShowInList); mCtrlShowInGroupList->setEnabled(can_change_ident); mCtrlShowInGroupList->resetDirty(); } if (mComboMature) { if(gdatap->mMaturePublish) { mComboMature->setCurrentByIndex(MATURE_CONTENT); } else { mComboMature->setCurrentByIndex(NON_MATURE_CONTENT); } mComboMature->setEnabled(can_change_ident); mComboMature->setVisible( !gAgent.isTeen() ); mComboMature->resetDirty(); } if (mCtrlOpenEnrollment) { mCtrlOpenEnrollment->set(gdatap->mOpenEnrollment); mCtrlOpenEnrollment->setEnabled(can_change_member_opts); mCtrlOpenEnrollment->resetDirty(); } if (mCtrlEnrollmentFee) { mCtrlEnrollmentFee->set(gdatap->mMembershipFee > 0); mCtrlEnrollmentFee->setEnabled(can_change_member_opts); mCtrlEnrollmentFee->resetDirty(); } if (mSpinEnrollmentFee) { S32 fee = gdatap->mMembershipFee; mSpinEnrollmentFee->set((F32)fee); mSpinEnrollmentFee->setEnabled(fee && can_change_member_opts); mSpinEnrollmentFee->resetDirty(); } if ( mBtnJoinGroup ) { std::string fee_buff; bool visible; visible = !is_member && gdatap->mOpenEnrollment; mBtnJoinGroup->setVisible(visible); if ( visible ) { fee_buff = llformat( "Join (%s%d)", gHippoGridManager->getConnectedGrid()->getCurrencySymbol().c_str(), gdatap->mMembershipFee); mBtnJoinGroup->setLabelSelected(fee_buff); mBtnJoinGroup->setLabelUnselected(fee_buff); } } if ( mBtnInfo ) { mBtnInfo->setVisible(is_member && !mAllowEdit); } if(gc == GC_ALL || gc == GC_PROPERTIES) { if (mCtrlReceiveNotices) { mCtrlReceiveNotices->setVisible(is_member); if (is_member) { if(!mCtrlReceiveNotices->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc. { mCtrlReceiveNotices->set(agent_gdatap.mAcceptNotices); mCtrlReceiveNotices->resetDirty(); } } } if (mCtrlListGroup) { mCtrlListGroup->setVisible(is_member); if (is_member) { if(!mCtrlListGroup->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc. { mCtrlListGroup->set(agent_gdatap.mListInProfile); mCtrlListGroup->resetDirty(); } } } if (mCtrlReceiveChat) { mCtrlReceiveChat->setVisible(is_member); if (is_member) { if(!mCtrlReceiveChat->isDirty()) //If the user hasn't edited this then refresh it. Value may have changed in groups panel, etc. { mCtrlReceiveChat->set(!gIMMgr->getIgnoreGroup(mGroupID)); mCtrlReceiveChat->resetDirty(); } } } if (mInsignia) mInsignia->setEnabled(can_change_ident); if (mEditCharter) mEditCharter->setEnabled(can_change_ident); if (mGroupName) mGroupName->setText(gdatap->mName); if (mGroupNameEditor) mGroupNameEditor->setVisible(FALSE); if (mFounderName) mFounderName->setNameID(gdatap->mFounderID,FALSE); LLNameEditor* key_edit = getChild<LLNameEditor>("group_key"); if(key_edit) { key_edit->setText(gdatap->getID().asString()); } if (mInsignia) { if (gdatap->mInsigniaID.notNull()) { mInsignia->setImageAssetID(gdatap->mInsigniaID); } else { mInsignia->setImageAssetID(mDefaultIconID); } } if (mEditCharter) { mEditCharter->setText(gdatap->mCharter); mEditCharter->resetDirty(); } } if (mListVisibleMembers) { mListVisibleMembers->deleteAllItems(); if (gdatap->isMemberDataComplete()) { mMemberProgress = gdatap->mMembers.begin(); mPendingMemberUpdate = TRUE; sSDTime = 0.0f; sElementTime = 0.0f; sAllTime = 0.0f; } else { std::stringstream pending; pending << "Retrieving member list (" << gdatap->mMembers.size() << "\\" << gdatap->mMemberCount << ")"; LLSD row; row["columns"][0]["value"] = pending.str(); row["columns"][0]["column"] = "name"; mListVisibleMembers->setEnabled(FALSE); mListVisibleMembers->addElement(row); } } }