diff options
Diffstat (limited to 'indra/newview/llinspectgroup.cpp')
-rw-r--r-- | indra/newview/llinspectgroup.cpp | 332 |
1 files changed, 166 insertions, 166 deletions
diff --git a/indra/newview/llinspectgroup.cpp b/indra/newview/llinspectgroup.cpp index 0a30ab9217..db48061c56 100644 --- a/indra/newview/llinspectgroup.cpp +++ b/indra/newview/llinspectgroup.cpp @@ -1,24 +1,24 @@ -/** +/** * @file llinspectgroup.cpp * * $LicenseInfo:firstyear=2009&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -34,10 +34,10 @@ #include "llstartup.h" // Linden libraries -#include "llcontrol.h" // LLCachedControl +#include "llcontrol.h" // LLCachedControl #include "llfloater.h" #include "llfloaterreg.h" -#include "llresmgr.h" // getMonetaryString() +#include "llresmgr.h" // getMonetaryString() #include "lltrans.h" #include "lluictrl.h" #include "llgroupiconctrl.h" @@ -50,61 +50,61 @@ /// on group names in the 2D UI class LLInspectGroup : public LLInspect, public LLGroupMgrObserver { - friend class LLFloaterReg; - + friend class LLFloaterReg; + public: - // key["group_id"] - Group ID for which to show information - // Inspector will be positioned relative to current mouse position - LLInspectGroup(const LLSD& key); - virtual ~LLInspectGroup(); - - // Because floater is single instance, need to re-parse data on each spawn - // (for example, inspector about same group but in different position) - /*virtual*/ void onOpen(const LLSD& group_id); - - void setGroupID(const LLUUID& group_id); - - // When closing they should close their gear menu - /*virtual*/ void onClose(bool app_quitting); - - // Update view based on information from group manager - void processGroupData(); - - virtual void changed(LLGroupChange gc); - - // Make network requests for all the data to display in this view. - // Used on construction and if avatar id changes. - void requestUpdate(); - - // Callback for gCacheName to look up group name - // Faster than waiting for group properties to return - void nameUpdatedCallback(const LLUUID& id, - const std::string& name, - bool is_group); - - // Button/menu callbacks - void onClickViewProfile(); - void onClickJoin(); - void onClickLeave(); - + // key["group_id"] - Group ID for which to show information + // Inspector will be positioned relative to current mouse position + LLInspectGroup(const LLSD& key); + virtual ~LLInspectGroup(); + + // Because floater is single instance, need to re-parse data on each spawn + // (for example, inspector about same group but in different position) + /*virtual*/ void onOpen(const LLSD& group_id); + + void setGroupID(const LLUUID& group_id); + + // When closing they should close their gear menu + /*virtual*/ void onClose(bool app_quitting); + + // Update view based on information from group manager + void processGroupData(); + + virtual void changed(LLGroupChange gc); + + // Make network requests for all the data to display in this view. + // Used on construction and if avatar id changes. + void requestUpdate(); + + // Callback for gCacheName to look up group name + // Faster than waiting for group properties to return + void nameUpdatedCallback(const LLUUID& id, + const std::string& name, + bool is_group); + + // Button/menu callbacks + void onClickViewProfile(); + void onClickJoin(); + void onClickLeave(); + private: - LLUUID mGroupID; + LLUUID mGroupID; }; LLInspectGroup::LLInspectGroup(const LLSD& sd) -: LLInspect( LLSD() ), // single_instance, doesn't really need key - mGroupID() // set in onOpen() +: LLInspect( LLSD() ), // single_instance, doesn't really need key + mGroupID() // set in onOpen() { - mCommitCallbackRegistrar.add("InspectGroup.ViewProfile", - boost::bind(&LLInspectGroup::onClickViewProfile, this)); - mCommitCallbackRegistrar.add("InspectGroup.Join", - boost::bind(&LLInspectGroup::onClickJoin, this)); - mCommitCallbackRegistrar.add("InspectGroup.Leave", - boost::bind(&LLInspectGroup::onClickLeave, this)); - - // can't make the properties request until the widgets are constructed - // as it might return immediately, so do it in postBuild. + mCommitCallbackRegistrar.add("InspectGroup.ViewProfile", + boost::bind(&LLInspectGroup::onClickViewProfile, this)); + mCommitCallbackRegistrar.add("InspectGroup.Join", + boost::bind(&LLInspectGroup::onClickJoin, this)); + mCommitCallbackRegistrar.add("InspectGroup.Leave", + boost::bind(&LLInspectGroup::onClickLeave, this)); + + // can't make the properties request until the widgets are constructed + // as it might return immediately, so do it in postBuild. } LLInspectGroup::~LLInspectGroup() @@ -118,15 +118,15 @@ LLInspectGroup::~LLInspectGroup() //virtual void LLInspectGroup::onOpen(const LLSD& data) { - // start fade animation - LLInspect::onOpen(data); + // start fade animation + LLInspect::onOpen(data); - setGroupID(data["group_id"]); + setGroupID(data["group_id"]); - LLInspect::repositionInspector(data); + LLInspect::repositionInspector(data); - // can't call from constructor as widgets are not built yet - requestUpdate(); + // can't call from constructor as widgets are not built yet + requestUpdate(); } // virtual @@ -134,47 +134,47 @@ void LLInspectGroup::onClose(bool app_quitting) { LLGroupMgr::getInstance()->removeObserver(this); // *TODO: If we add a gear menu, close it here -} +} void LLInspectGroup::requestUpdate() { - // Don't make network requests when spawning from the debug menu at the - // login screen (which is useful to work on the layout). - if (mGroupID.isNull()) - { - if (LLStartUp::getStartupState() >= STATE_STARTED) - { - // once we're running we don't want to show the test floater - // for bogus LLUUID::null links - closeFloater(); - } - return; - } - - // Clear out old data so it doesn't flash between old and new - getChild<LLUICtrl>("group_name")->setValue(""); - getChild<LLUICtrl>("group_subtitle")->setValue(""); - getChild<LLUICtrl>("group_details")->setValue(""); - getChild<LLUICtrl>("group_cost")->setValue(""); - // Must have a visible button so the inspector can take focus - getChild<LLUICtrl>("view_profile_btn")->setVisible(true); - getChild<LLUICtrl>("leave_btn")->setVisible(false); - getChild<LLUICtrl>("join_btn")->setVisible(false); - - LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); - if (!gdatap || !gdatap->isGroupPropertiesDataComplete() ) - { - LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mGroupID); - } - else - { - processGroupData(); - } - - // Name lookup will be faster out of cache, use that - gCacheName->getGroup(mGroupID, - boost::bind(&LLInspectGroup::nameUpdatedCallback, - this, _1, _2, _3)); + // Don't make network requests when spawning from the debug menu at the + // login screen (which is useful to work on the layout). + if (mGroupID.isNull()) + { + if (LLStartUp::getStartupState() >= STATE_STARTED) + { + // once we're running we don't want to show the test floater + // for bogus LLUUID::null links + closeFloater(); + } + return; + } + + // Clear out old data so it doesn't flash between old and new + getChild<LLUICtrl>("group_name")->setValue(""); + getChild<LLUICtrl>("group_subtitle")->setValue(""); + getChild<LLUICtrl>("group_details")->setValue(""); + getChild<LLUICtrl>("group_cost")->setValue(""); + // Must have a visible button so the inspector can take focus + getChild<LLUICtrl>("view_profile_btn")->setVisible(true); + getChild<LLUICtrl>("leave_btn")->setVisible(false); + getChild<LLUICtrl>("join_btn")->setVisible(false); + + LLGroupMgrGroupData* gdatap = LLGroupMgr::getInstance()->getGroupData(mGroupID); + if (!gdatap || !gdatap->isGroupPropertiesDataComplete() ) + { + LLGroupMgr::getInstance()->sendGroupPropertiesRequest(mGroupID); + } + else + { + processGroupData(); + } + + // Name lookup will be faster out of cache, use that + gCacheName->getGroup(mGroupID, + boost::bind(&LLInspectGroup::nameUpdatedCallback, + this, _1, _2, _3)); } void LLInspectGroup::setGroupID(const LLUUID& group_id) @@ -188,16 +188,16 @@ void LLInspectGroup::setGroupID(const LLUUID& group_id) } void LLInspectGroup::nameUpdatedCallback( - const LLUUID& id, - const std::string& name, - bool is_group) + const LLUUID& id, + const std::string& name, + bool is_group) { - if (id == mGroupID) - { - getChild<LLUICtrl>("group_name")->setValue(LLSD("<nolink>" + name + "</nolink>")); - } - - // Otherwise possibly a request for an older inspector, ignore it + if (id == mGroupID) + { + getChild<LLUICtrl>("group_name")->setValue(LLSD("<nolink>" + name + "</nolink>")); + } + + // Otherwise possibly a request for an older inspector, ignore it } void LLInspectGroup::changed(LLGroupChange gc) @@ -210,74 +210,74 @@ void LLInspectGroup::changed(LLGroupChange gc) void LLInspectGroup::processGroupData() { - LLGroupMgrGroupData* data = - LLGroupMgr::getInstance()->getGroupData(mGroupID); - - if (data) - { - // Noun pluralization depends on language - std::string lang = LLUI::getLanguage(); - std::string members = - LLTrans::getCountString(lang, "GroupMembers", data->mMemberCount); - getChild<LLUICtrl>("group_subtitle")->setValue( LLSD(members) ); - - getChild<LLUICtrl>("group_details")->setValue( LLSD(data->mCharter) ); - - getChild<LLGroupIconCtrl>("group_icon")->setIconId(data->mInsigniaID); - - std::string cost; - bool is_member = LLGroupActions::isInGroup(mGroupID); - if (is_member) - { - cost = getString("YouAreMember"); - } - else if (data->mOpenEnrollment) - { - if (data->mMembershipFee == 0) - { - cost = getString("FreeToJoin"); - } - else - { - std::string amount = - LLResMgr::getInstance()->getMonetaryString( - data->mMembershipFee); - LLStringUtil::format_map_t args; - args["[AMOUNT]"] = amount; - cost = getString("CostToJoin", args); - } - } - else - { - cost = getString("PrivateGroup"); - } - getChild<LLUICtrl>("group_cost")->setValue(cost); - - getChild<LLUICtrl>("join_btn")->setVisible(!is_member); - getChild<LLUICtrl>("leave_btn")->setVisible(is_member); - - // Only enable join button if you are allowed to join - bool can_join = !is_member && data->mOpenEnrollment; - getChild<LLUICtrl>("join_btn")->setEnabled(can_join); - } + LLGroupMgrGroupData* data = + LLGroupMgr::getInstance()->getGroupData(mGroupID); + + if (data) + { + // Noun pluralization depends on language + std::string lang = LLUI::getLanguage(); + std::string members = + LLTrans::getCountString(lang, "GroupMembers", data->mMemberCount); + getChild<LLUICtrl>("group_subtitle")->setValue( LLSD(members) ); + + getChild<LLUICtrl>("group_details")->setValue( LLSD(data->mCharter) ); + + getChild<LLGroupIconCtrl>("group_icon")->setIconId(data->mInsigniaID); + + std::string cost; + bool is_member = LLGroupActions::isInGroup(mGroupID); + if (is_member) + { + cost = getString("YouAreMember"); + } + else if (data->mOpenEnrollment) + { + if (data->mMembershipFee == 0) + { + cost = getString("FreeToJoin"); + } + else + { + std::string amount = + LLResMgr::getInstance()->getMonetaryString( + data->mMembershipFee); + LLStringUtil::format_map_t args; + args["[AMOUNT]"] = amount; + cost = getString("CostToJoin", args); + } + } + else + { + cost = getString("PrivateGroup"); + } + getChild<LLUICtrl>("group_cost")->setValue(cost); + + getChild<LLUICtrl>("join_btn")->setVisible(!is_member); + getChild<LLUICtrl>("leave_btn")->setVisible(is_member); + + // Only enable join button if you are allowed to join + bool can_join = !is_member && data->mOpenEnrollment; + getChild<LLUICtrl>("join_btn")->setEnabled(can_join); + } } void LLInspectGroup::onClickViewProfile() { - closeFloater(); - LLGroupActions::show(mGroupID); + closeFloater(); + LLGroupActions::show(mGroupID); } void LLInspectGroup::onClickJoin() { - closeFloater(); - LLGroupActions::join(mGroupID); + closeFloater(); + LLGroupActions::join(mGroupID); } void LLInspectGroup::onClickLeave() { - closeFloater(); - LLGroupActions::leave(mGroupID); + closeFloater(); + LLGroupActions::leave(mGroupID); } ////////////////////////////////////////////////////////////////////////////// @@ -285,6 +285,6 @@ void LLInspectGroup::onClickLeave() ////////////////////////////////////////////////////////////////////////////// void LLInspectGroupUtil::registerFloater() { - LLFloaterReg::add("inspect_group", "inspect_group.xml", - &LLFloaterReg::build<LLInspectGroup>); + LLFloaterReg::add("inspect_group", "inspect_group.xml", + &LLFloaterReg::build<LLInspectGroup>); } |