diff options
Diffstat (limited to 'indra/newview/llpanelgroupgeneral.cpp')
-rw-r--r-- | indra/newview/llpanelgroupgeneral.cpp | 288 |
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(); +} + |