summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelgroupgeneral.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelgroupgeneral.cpp')
-rw-r--r--indra/newview/llpanelgroupgeneral.cpp288
1 files changed, 180 insertions, 108 deletions
diff --git a/indra/newview/llpanelgroupgeneral.cpp b/indra/newview/llpanelgroupgeneral.cpp
index 3dc5e032c5..f3893a104c 100644
--- a/indra/newview/llpanelgroupgeneral.cpp
+++ b/indra/newview/llpanelgroupgeneral.cpp
@@ -37,49 +37,43 @@
#include "lluictrlfactory.h"
#include "llagent.h"
#include "roles_constants.h"
-#include "llfloateravatarinfo.h"
-#include "llfloatergroupinfo.h"
// UI elements
#include "llbutton.h"
#include "llcheckboxctrl.h"
#include "llcombobox.h"
#include "lldbstrings.h"
+#include "llavataractions.h"
+#include "llgroupactions.h"
#include "lllineeditor.h"
#include "llnamebox.h"
#include "llnamelistctrl.h"
+#include "llscrolllistitem.h"
#include "llspinctrl.h"
#include "llstatusbar.h" // can_afford_transaction()
#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");
+
// consts
const S32 MATURE_CONTENT = 1;
const S32 NON_MATURE_CONTENT = 2;
const S32 DECLINE_TO_STATE = 0;
-// static
-void* LLPanelGroupGeneral::createTab(void* data)
-{
- LLUUID* group_id = static_cast<LLUUID*>(data);
- return new LLPanelGroupGeneral("panel group general", *group_id);
-}
-
-LLPanelGroupGeneral::LLPanelGroupGeneral(const std::string& name,
- const LLUUID& group_id)
-: LLPanelGroupTab(name, group_id),
+LLPanelGroupGeneral::LLPanelGroupGeneral()
+: LLPanelGroupTab(),
mPendingMemberUpdate(FALSE),
mChanged(FALSE),
mFirstUse(TRUE),
mGroupNameEditor(NULL),
- mGroupName(NULL),
mFounderName(NULL),
mInsignia(NULL),
mEditCharter(NULL),
- mBtnJoinGroup(NULL),
mListVisibleMembers(NULL),
mCtrlShowInGroupList(NULL),
mComboMature(NULL),
@@ -100,74 +94,40 @@ LLPanelGroupGeneral::~LLPanelGroupGeneral()
BOOL LLPanelGroupGeneral::postBuild()
{
- llinfos << "LLPanelGroupGeneral::postBuild()" << llendl;
-
bool recurse = true;
// General info
mGroupNameEditor = getChild<LLLineEditor>("group_name_editor", recurse);
- mGroupName = getChild<LLTextBox>("group_name", recurse);
-
- mInsignia = getChild<LLTextureCtrl>("insignia", recurse);
- if (mInsignia)
- {
- mInsignia->setCommitCallback(onCommitAny);
- mInsignia->setCallbackUserData(this);
- mDefaultIconID = mInsignia->getImageAssetID();
- }
mEditCharter = getChild<LLTextEditor>("charter", recurse);
if(mEditCharter)
{
- mEditCharter->setCommitCallback(onCommitAny);
+ mEditCharter->setCommitCallback(onCommitAny, this);
mEditCharter->setFocusReceivedCallback(onFocusEdit, this);
mEditCharter->setFocusChangedCallback(onFocusEdit, this);
- mEditCharter->setCallbackUserData(this);
}
- mBtnJoinGroup = getChild<LLButton>("join_button", recurse);
- if ( mBtnJoinGroup )
- {
- mBtnJoinGroup->setClickedCallback(onClickJoin);
- mBtnJoinGroup->setCallbackUserData(this);
- }
- mBtnInfo = getChild<LLButton>("info_button", recurse);
- if ( mBtnInfo )
- {
- mBtnInfo->setClickedCallback(onClickInfo);
- mBtnInfo->setCallbackUserData(this);
- }
-
- LLTextBox* founder = getChild<LLTextBox>("founder_name");
- if (founder)
- {
- mFounderName = new LLNameBox(founder->getName(),founder->getRect(),LLUUID::null,FALSE,founder->getFont(),founder->getMouseOpaque());
- removeChild(founder, TRUE);
- addChild(mFounderName);
- }
mListVisibleMembers = getChild<LLNameListCtrl>("visible_members", recurse);
if (mListVisibleMembers)
{
- mListVisibleMembers->setDoubleClickCallback(openProfile);
- mListVisibleMembers->setCallbackUserData(this);
+ mListVisibleMembers->setDoubleClickCallback(openProfile, this);
+ mListVisibleMembers->setContextMenu(LLScrollListCtrl::MENU_AVATAR);
}
// Options
mCtrlShowInGroupList = getChild<LLCheckBoxCtrl>("show_in_group_list", recurse);
if (mCtrlShowInGroupList)
{
- mCtrlShowInGroupList->setCommitCallback(onCommitAny);
- mCtrlShowInGroupList->setCallbackUserData(this);
+ mCtrlShowInGroupList->setCommitCallback(onCommitAny, this);
}
mComboMature = getChild<LLComboBox>("group_mature_check", recurse);
if(mComboMature)
{
mComboMature->setCurrentByIndex(0);
- mComboMature->setCommitCallback(onCommitAny);
- mComboMature->setCallbackUserData(this);
+ mComboMature->setCommitCallback(onCommitAny, this);
if (gAgent.isTeen())
{
// Teens don't get to set mature flag. JC
@@ -178,22 +138,19 @@ BOOL LLPanelGroupGeneral::postBuild()
mCtrlOpenEnrollment = getChild<LLCheckBoxCtrl>("open_enrollement", recurse);
if (mCtrlOpenEnrollment)
{
- mCtrlOpenEnrollment->setCommitCallback(onCommitAny);
- mCtrlOpenEnrollment->setCallbackUserData(this);
+ mCtrlOpenEnrollment->setCommitCallback(onCommitAny, this);
}
mCtrlEnrollmentFee = getChild<LLCheckBoxCtrl>("check_enrollment_fee", recurse);
if (mCtrlEnrollmentFee)
{
- mCtrlEnrollmentFee->setCommitCallback(onCommitEnrollment);
- mCtrlEnrollmentFee->setCallbackUserData(this);
+ mCtrlEnrollmentFee->setCommitCallback(onCommitEnrollment, this);
}
mSpinEnrollmentFee = getChild<LLSpinCtrl>("spin_enrollment_fee", recurse);
if (mSpinEnrollmentFee)
{
- mSpinEnrollmentFee->setCommitCallback(onCommitAny);
- mSpinEnrollmentFee->setCallbackUserData(this);
+ mSpinEnrollmentFee->setCommitCallback(onCommitAny, this);
mSpinEnrollmentFee->setPrecision(0);
mSpinEnrollmentFee->resetDirty();
}
@@ -209,8 +166,7 @@ BOOL LLPanelGroupGeneral::postBuild()
mCtrlReceiveNotices = getChild<LLCheckBoxCtrl>("receive_notices", recurse);
if (mCtrlReceiveNotices)
{
- mCtrlReceiveNotices->setCommitCallback(onCommitUserOnly);
- mCtrlReceiveNotices->setCallbackUserData(this);
+ mCtrlReceiveNotices->setCommitCallback(onCommitUserOnly, this);
mCtrlReceiveNotices->set(accept_notices);
mCtrlReceiveNotices->setEnabled(data.mID.notNull());
}
@@ -218,8 +174,7 @@ BOOL LLPanelGroupGeneral::postBuild()
mCtrlListGroup = getChild<LLCheckBoxCtrl>("list_groups_in_profile", recurse);
if (mCtrlListGroup)
{
- mCtrlListGroup->setCommitCallback(onCommitUserOnly);
- mCtrlListGroup->setCallbackUserData(this);
+ mCtrlListGroup->setCommitCallback(onCommitUserOnly, this);
mCtrlListGroup->set(list_in_profile);
mCtrlListGroup->setEnabled(data.mID.notNull());
mCtrlListGroup->resetDirty();
@@ -230,14 +185,12 @@ BOOL LLPanelGroupGeneral::postBuild()
mComboActiveTitle = getChild<LLComboBox>("active_title", recurse);
if (mComboActiveTitle)
{
- mComboActiveTitle->setCommitCallback(onCommitTitle);
- mComboActiveTitle->setCallbackUserData(this);
+ mComboActiveTitle->setCommitCallback(onCommitTitle, this);
mComboActiveTitle->resetDirty();
}
mIncompleteMemberDataStr = getString("incomplete_member_data_str");
- mConfirmGroupCreateStr = getString("confirm_group_create_str");
-
+
// If the group_id is null, then we are creating a new group
if (mGroupID.isNull())
{
@@ -250,14 +203,22 @@ BOOL LLPanelGroupGeneral::postBuild()
mCtrlEnrollmentFee->setEnabled(TRUE);
mSpinEnrollmentFee->setEnabled(TRUE);
- mBtnJoinGroup->setVisible(FALSE);
- mBtnInfo->setVisible(FALSE);
- mGroupName->setVisible(FALSE);
}
return LLPanelGroupTab::postBuild();
}
+void LLPanelGroupGeneral::setupCtrls(LLPanel* panel_group)
+{
+ mInsignia = panel_group->getChild<LLTextureCtrl>("insignia");
+ if (mInsignia)
+ {
+ mInsignia->setCommitCallback(onCommitAny, this);
+ mDefaultIconID = mInsignia->getImageAssetID();
+ }
+ mFounderName = panel_group->getChild<LLNameBox>("founder_name");
+}
+
// static
void LLPanelGroupGeneral::onFocusEdit(LLFocusableElement* ctrl, void* data)
{
@@ -332,7 +293,8 @@ void LLPanelGroupGeneral::onClickInfo(void *userdata)
lldebugs << "open group info: " << self->mGroupID << llendl;
- LLFloaterGroupInfo::showFromUUID(self->mGroupID);
+ LLGroupActions::show(self->mGroupID);
+
}
// static
@@ -395,7 +357,7 @@ void LLPanelGroupGeneral::openProfile(void* data)
LLScrollListItem* selected = self->mListVisibleMembers->getFirstSelected();
if (selected)
{
- LLFloaterAvatarInfo::showFromDirectory( selected->getUUID() );
+ LLAvatarActions::showProfile(selected->getUUID());
}
}
}
@@ -470,9 +432,7 @@ bool LLPanelGroupGeneral::apply(std::string& mesg)
return false;
}
- LLSD args;
- args["MESSAGE"] = mConfirmGroupCreateStr;
- LLNotifications::instance().add("GenericAlertYesCancel", args, LLSD(), boost::bind(&LLPanelGroupGeneral::createGroupCallback, this, _1, _2));
+ LLNotifications::instance().add("CreateGroupCost", LLSD(), LLSD(), boost::bind(&LLPanelGroupGeneral::createGroupCallback, this, _1, _2));
return false;
}
@@ -480,8 +440,7 @@ bool LLPanelGroupGeneral::apply(std::string& mesg)
LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID);
if (!gdatap)
{
- // *TODO: Translate
- mesg = std::string("No group data found for group ");
+ mesg = LLTrans::getString("NoGroupDataFound");
mesg.append(mGroupID.asString());
return false;
}
@@ -720,26 +679,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
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 (L$%d)", gdatap->mMembershipFee);
- mBtnJoinGroup->setLabelSelected(fee_buff);
- mBtnJoinGroup->setLabelUnselected(fee_buff);
- }
- }
- if ( mBtnInfo )
- {
- mBtnInfo->setVisible(is_member && !mAllowEdit);
- }
-
if (mCtrlReceiveNotices)
{
mCtrlReceiveNotices->setVisible(is_member);
@@ -754,7 +693,6 @@ void LLPanelGroupGeneral::update(LLGroupChange gc)
if (mInsignia) mInsignia->setEnabled(mAllowEdit && can_change_ident);
if (mEditCharter) mEditCharter->setEnabled(mAllowEdit && can_change_ident);
- if (mGroupName) mGroupName->setText(gdatap->mName);
if (mGroupNameEditor) mGroupNameEditor->setVisible(FALSE);
if (mFounderName) mFounderName->setNameID(gdatap->mFounderID,FALSE);
if (mInsignia)
@@ -832,31 +770,33 @@ void LLPanelGroupGeneral::updateMembers()
}
// Owners show up in bold.
std::string style = "NORMAL";
- if ( member->isOwner() )
- {
- style = "BOLD";
- }
-
sd_timer.reset();
LLSD row;
row["id"] = member->getID();
row["columns"][0]["column"] = "name";
- row["columns"][0]["font-style"] = style;
+ 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-style"] = style;
+ row["columns"][1]["font"]["style"] = style;
row["columns"][2]["column"] = "online";
row["columns"][2]["value"] = member->getOnlineStatus();
- row["columns"][2]["font-style"] = style;
+ row["columns"][2]["font"]["style"] = style;
sSDTime += sd_timer.getElapsedTimeF32();
element_timer.reset();
- mListVisibleMembers->addElement(row);//, ADD_SORTED);
+ LLScrollListItem* member_row = mListVisibleMembers->addElement(row);//, ADD_SORTED);
+
+ 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();
@@ -884,7 +824,6 @@ void LLPanelGroupGeneral::updateChanged()
LLUICtrl *check_list[] =
{
mGroupNameEditor,
- mGroupName,
mFounderName,
mInsignia,
mEditCharter,
@@ -910,3 +849,136 @@ void LLPanelGroupGeneral::updateChanged()
}
}
}
+
+void LLPanelGroupGeneral::reset()
+{
+ mFounderName->setVisible(false);
+
+
+ mCtrlReceiveNotices->set(false);
+
+
+ mCtrlListGroup->set(true);
+
+ mCtrlReceiveNotices->setEnabled(true);
+ mCtrlReceiveNotices->setVisible(true);
+
+ mCtrlListGroup->setEnabled(true);
+
+ mGroupNameEditor->setEnabled(TRUE);
+ mEditCharter->setEnabled(TRUE);
+
+ mCtrlShowInGroupList->setEnabled(TRUE);
+ mComboMature->setEnabled(TRUE);
+
+ mCtrlOpenEnrollment->setEnabled(TRUE);
+
+ mCtrlEnrollmentFee->setEnabled(TRUE);
+
+ mSpinEnrollmentFee->setEnabled(TRUE);
+ mSpinEnrollmentFee->set((F32)0);
+
+ mGroupNameEditor->setVisible(true);
+
+ mComboActiveTitle->setVisible(false);
+
+ mInsignia->setImageAssetID(LLUUID::null);
+
+ {
+ std::string empty_str = "";
+ mEditCharter->setText(empty_str);
+ }
+
+ {
+ LLSD row;
+ row["columns"][0]["value"] = "no members yet";
+
+ mListVisibleMembers->deleteAllItems();
+ mListVisibleMembers->setEnabled(FALSE);
+ mListVisibleMembers->addElement(row);
+ }
+
+
+ {
+ mComboMature->setEnabled(true);
+ mComboMature->setVisible( !gAgent.isTeen() );
+ }
+
+
+ resetDirty();
+}
+
+void LLPanelGroupGeneral::resetDirty()
+{
+ // List all the controls we want to check for changes...
+ LLUICtrl *check_list[] =
+ {
+ mGroupNameEditor,
+ mFounderName,
+ mInsignia,
+ mEditCharter,
+ mCtrlShowInGroupList,
+ mComboMature,
+ mCtrlOpenEnrollment,
+ mCtrlEnrollmentFee,
+ mSpinEnrollmentFee,
+ mCtrlReceiveNotices,
+ mCtrlListGroup,
+ mActiveTitleLabel,
+ mComboActiveTitle
+ };
+
+ for( size_t i=0; i<LL_ARRAY_SIZE(check_list); i++ )
+ {
+ if( check_list[i] )
+ check_list[i]->resetDirty() ;
+ }
+
+
+}
+
+void LLPanelGroupGeneral::setGroupID(const LLUUID& id)
+{
+ LLPanelGroupTab::setGroupID(id);
+
+ if(id == LLUUID::null)
+ {
+ reset();
+ return;
+ }
+
+ BOOL accept_notices = FALSE;
+ BOOL list_in_profile = FALSE;
+ LLGroupData data;
+ if(gAgent.getGroupData(mGroupID,data))
+ {
+ accept_notices = data.mAcceptNotices;
+ list_in_profile = data.mListInProfile;
+ }
+ mCtrlReceiveNotices = getChild<LLCheckBoxCtrl>("receive_notices");
+ if (mCtrlReceiveNotices)
+ {
+ mCtrlReceiveNotices->set(accept_notices);
+ mCtrlReceiveNotices->setEnabled(data.mID.notNull());
+ }
+
+ mCtrlListGroup = getChild<LLCheckBoxCtrl>("list_groups_in_profile");
+ if (mCtrlListGroup)
+ {
+ mCtrlListGroup->set(list_in_profile);
+ mCtrlListGroup->setEnabled(data.mID.notNull());
+ }
+
+ mActiveTitleLabel = getChild<LLTextBox>("active_title_label");
+
+ mComboActiveTitle = getChild<LLComboBox>("active_title");
+
+ mFounderName->setVisible(true);
+
+ mInsignia->setImageAssetID(LLUUID::null);
+
+ resetDirty();
+
+ activate();
+}
+