summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelgroupgeneral.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelgroupgeneral.cpp')
-rwxr-xr-x[-rw-r--r--]indra/newview/llpanelgroupgeneral.cpp193
1 files changed, 13 insertions, 180 deletions
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index ec340dc258..7ffaa05919 100644..100755
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -28,8 +28,10 @@
#include "llpanelgroupgeneral.h"
-#include "lluictrlfactory.h"
+#include "llavatarnamecache.h"
#include "llagent.h"
+#include "llsdparam.h"
+#include "lluictrlfactory.h"
#include "roles_constants.h"
// UI elements
@@ -44,13 +46,14 @@
#include "llnotificationsutil.h"
#include "llscrolllistitem.h"
#include "llspinctrl.h"
+#include "llslurl.h"
#include "lltextbox.h"
#include "lltexteditor.h"
#include "lltexturectrl.h"
#include "lltrans.h"
#include "llviewerwindow.h"
-static LLRegisterPanelClassWrapper<LLPanelGroupGeneral> t_panel_group_general("panel_group_general");
+static LLPanelInjector<LLPanelGroupGeneral> t_panel_group_general("panel_group_general");
// consts
const S32 MATURE_CONTENT = 1;
@@ -60,14 +63,12 @@ const S32 DECLINE_TO_STATE = 0;
LLPanelGroupGeneral::LLPanelGroupGeneral()
: LLPanelGroupTab(),
- mPendingMemberUpdate(FALSE),
mChanged(FALSE),
mFirstUse(TRUE),
mGroupNameEditor(NULL),
mFounderName(NULL),
mInsignia(NULL),
mEditCharter(NULL),
- mListVisibleMembers(NULL),
mCtrlShowInGroupList(NULL),
mComboMature(NULL),
mCtrlOpenEnrollment(NULL),
@@ -97,17 +98,6 @@ BOOL LLPanelGroupGeneral::postBuild()
mEditCharter->setFocusChangedCallback(boost::bind(onFocusEdit, _1, this));
}
-
-
- mListVisibleMembers = getChild<LLNameListCtrl>("visible_members", recurse);
- if (mListVisibleMembers)
- {
- mListVisibleMembers->setDoubleClickCallback(openProfile, this);
- mListVisibleMembers->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
-
- mListVisibleMembers->setSortCallback(boost::bind(&LLPanelGroupGeneral::sortMembersList,this,_1,_2,_3));
- }
-
// Options
mCtrlShowInGroupList = getChild<LLCheckBoxCtrl>("show_in_group_list", recurse);
if (mCtrlShowInGroupList)
@@ -276,27 +266,12 @@ void LLPanelGroupGeneral::onClickInfo(void *userdata)
if ( !self ) return;
- lldebugs << "open group info: " << self->mGroupID << llendl;
+ LL_DEBUGS() << "open group info: " << self->mGroupID << LL_ENDL;
LLGroupActions::show(self->mGroupID);
}
-// static
-void LLPanelGroupGeneral::openProfile(void* data)
-{
- LLPanelGroupGeneral* self = (LLPanelGroupGeneral*)data;
-
- if (self && self->mListVisibleMembers)
- {
- LLScrollListItem* selected = self->mListVisibleMembers->getFirstSelected();
- if (selected)
- {
- LLAvatarActions::showProfile(selected->getUUID());
- }
- }
-}
-
bool LLPanelGroupGeneral::needsApply(std::string& mesg)
{
updateChanged();
@@ -312,11 +287,10 @@ void LLPanelGroupGeneral::activate()
{
LLGroupMgr::getInstance()->sendGroupTitlesRequest(mGroupID);
LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mGroupID);
-
if (!gdatap || !gdatap->isMemberDataComplete() )
{
- LLGroupMgr::getInstance()->sendGroupMembersRequest(mGroupID);
+ LLGroupMgr::getInstance()->sendCapGroupMembersRequest(mGroupID);
}
mFirstUse = FALSE;
@@ -329,11 +303,6 @@ void LLPanelGroupGeneral::activate()
void LLPanelGroupGeneral::draw()
{
LLPanelGroupTab::draw();
-
- if (mPendingMemberUpdate)
- {
- updateMembers();
- }
}
bool LLPanelGroupGeneral::apply(std::string& mesg)
@@ -349,7 +318,7 @@ bool LLPanelGroupGeneral::apply(std::string& mesg)
if (has_power_in_group || mGroupID.isNull())
{
- llinfos << "LLPanelGroupGeneral::apply" << llendl;
+ LL_INFOS() << "LLPanelGroupGeneral::apply" << LL_ENDL;
// Check to make sure mature has been set
if(mComboMature &&
@@ -515,10 +484,6 @@ bool LLPanelGroupGeneral::createGroupCallback(const LLSD& notification, const LL
return false;
}
-static F32 sSDTime = 0.0f;
-static F32 sElementTime = 0.0f;
-static F32 sAllTime = 0.0f;
-
// virtual
void LLPanelGroupGeneral::update(LLGroupChange gc)
{
@@ -578,6 +543,11 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
}
+ // 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;
@@ -655,120 +625,9 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
mEditCharter->setText(gdatap->mCharter);
}
- 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);
- }
- }
-
resetDirty();
}
-void LLPanelGroupGeneral::updateMembers()
-{
- mPendingMemberUpdate = FALSE;
-
- LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
-
- if (!mListVisibleMembers || !gdatap
- || !gdatap->isMemberDataComplete()
- || gdatap->mMembers.empty())
- {
- return;
- }
-
- static LLTimer all_timer;
- static LLTimer sd_timer;
- static LLTimer element_timer;
-
- all_timer.reset();
- S32 i = 0;
-
- for( ; mMemberProgress != gdatap->mMembers.end() && i<UPDATE_MEMBERS_PER_FRAME;
- ++mMemberProgress, ++i)
- {
- //llinfos << "Adding " << iter->first << ", " << iter->second->getTitle() << llendl;
- LLGroupMemberData* member = mMemberProgress->second;
- if (!member)
- {
- continue;
- }
- // Owners show up in bold.
- std::string style = "NORMAL";
- sd_timer.reset();
- LLSD row;
- row["id"] = member->getID();
-
- row["columns"][0]["column"] = "name";
- row["columns"][0]["font"]["name"] = "SANSSERIF_SMALL";
- row["columns"][0]["font"]["style"] = style;
- // value is filled in by name list control
-
- row["columns"][1]["column"] = "title";
- row["columns"][1]["value"] = member->getTitle();
- row["columns"][1]["font"]["name"] = "SANSSERIF_SMALL";
- row["columns"][1]["font"]["style"] = style;
-
- std::string status = member->getOnlineStatus();
-
- row["columns"][2]["column"] = "status";
- row["columns"][2]["value"] = status;
- row["columns"][2]["font"]["name"] = "SANSSERIF_SMALL";
- row["columns"][2]["font"]["style"] = style;
-
- sSDTime += sd_timer.getElapsedTimeF32();
-
- element_timer.reset();
- LLScrollListItem* member_row = mListVisibleMembers->addElement(row);
-
- if ( member->isOwner() )
- {
- LLScrollListText* name_textp = dynamic_cast<LLScrollListText*>(member_row->getColumn(0));
- if (name_textp)
- name_textp->setFontStyle(LLFontGL::BOLD);
- }
- sElementTime += element_timer.getElapsedTimeF32();
- }
- sAllTime += all_timer.getElapsedTimeF32();
-
- llinfos << "Updated " << i << " of " << UPDATE_MEMBERS_PER_FRAME << "members in the list." << llendl;
- if (mMemberProgress == gdatap->mMembers.end())
- {
- llinfos << " member list completed." << llendl;
- mListVisibleMembers->setEnabled(TRUE);
-
- llinfos << "All Time: " << sAllTime << llendl;
- llinfos << "SD Time: " << sSDTime << llendl;
- llinfos << "Element Time: " << sElementTime << llendl;
- }
- else
- {
- mPendingMemberUpdate = TRUE;
- mListVisibleMembers->setEnabled(FALSE);
- }
-}
-
void LLPanelGroupGeneral::updateChanged()
{
// List all the controls we want to check for changes...
@@ -846,17 +705,6 @@ void LLPanelGroupGeneral::reset()
}
{
- LLSD row;
- row["columns"][0]["value"] = "no members yet";
- row["columns"][0]["column"] = "name";
-
- mListVisibleMembers->deleteAllItems();
- mListVisibleMembers->setEnabled(FALSE);
- mListVisibleMembers->addElement(row);
- }
-
-
- {
mComboMature->setEnabled(true);
mComboMature->setVisible( !gAgent.isTeen() );
mComboMature->selectFirstItem();
@@ -941,18 +789,3 @@ void LLPanelGroupGeneral::setGroupID(const LLUUID& id)
activate();
}
-S32 LLPanelGroupGeneral::sortMembersList(S32 col_idx,const LLScrollListItem* i1,const LLScrollListItem* i2)
-{
- const LLScrollListCell *cell1 = i1->getColumn(col_idx);
- const LLScrollListCell *cell2 = i2->getColumn(col_idx);
-
- if(col_idx == 2)
- {
- if(LLStringUtil::compareDict(cell1->getValue().asString(),"Online") == 0 )
- return 1;
- if(LLStringUtil::compareDict(cell2->getValue().asString(),"Online") == 0 )
- return -1;
- }
-
- return LLStringUtil::compareDict(cell1->getValue().asString(), cell2->getValue().asString());
-}