diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llfloatergroupinvite.cpp |
Print done when done.
Diffstat (limited to 'indra/newview/llfloatergroupinvite.cpp')
-rw-r--r-- | indra/newview/llfloatergroupinvite.cpp | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/indra/newview/llfloatergroupinvite.cpp b/indra/newview/llfloatergroupinvite.cpp new file mode 100644 index 0000000000..b21711a96f --- /dev/null +++ b/indra/newview/llfloatergroupinvite.cpp @@ -0,0 +1,118 @@ +/** + * @file llfloatergroupinvite.cpp + * @brief Floater to invite new members into a group. + * + * Copyright (c) 2006-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloatergroupinvite.h" +#include "llpanelgroupinvite.h" + +const char FLOATER_TITLE[] = "Group Invitation"; +const LLRect FGI_RECT(0, 380, 210, 0); + +class LLFloaterGroupInvite::impl +{ +public: + impl(const LLUUID& group_id); + ~impl(); + + static void closeFloater(void* data); + +public: + LLUUID mGroupID; + LLPanelGroupInvite* mInvitePanelp; + + static std::map<LLUUID, LLFloaterGroupInvite*> sInstances; +}; + +// +// Globals +// +std::map<LLUUID, LLFloaterGroupInvite*> LLFloaterGroupInvite::impl::sInstances; + +LLFloaterGroupInvite::impl::impl(const LLUUID& group_id) +{ + mGroupID = group_id; +} + +LLFloaterGroupInvite::impl::~impl() +{ +} + +//static +void LLFloaterGroupInvite::impl::closeFloater(void* data) +{ + LLFloaterGroupInvite* floaterp = (LLFloaterGroupInvite*) data; + + if ( floaterp ) floaterp->close(); +} + +//----------------------------------------------------------------------------- +// Implementation +//----------------------------------------------------------------------------- +LLFloaterGroupInvite::LLFloaterGroupInvite(const std::string& name, + const LLRect &rect, + const std::string& title, + const LLUUID& group_id) +: LLFloater(name, rect, title) +{ + LLRect contents(mRect); + contents.mTop -= LLFLOATER_HEADER_SIZE; + + mImpl = new impl(group_id); + + mImpl->mInvitePanelp = new LLPanelGroupInvite("Group Invite Panel", + group_id); + + mImpl->mInvitePanelp->setCloseCallback(impl::closeFloater, this); + + mImpl->mInvitePanelp->setRect(contents); + addChild(mImpl->mInvitePanelp); +} + +// virtual +LLFloaterGroupInvite::~LLFloaterGroupInvite() +{ + if (mImpl->mGroupID.notNull()) + { + impl::sInstances.erase(mImpl->mGroupID); + } + + delete mImpl->mInvitePanelp; + delete mImpl; +} + +// static +void LLFloaterGroupInvite::showForGroup(const LLUUID& group_id) +{ + // Make sure group_id isn't null + if (group_id.isNull()) + { + llwarns << "LLFloaterGroupInvite::showForGroup with null group_id!" << llendl; + return; + } + + // If we don't have a floater for this group, create one. + LLFloaterGroupInvite *fgi = get_if_there(impl::sInstances, + group_id, + (LLFloaterGroupInvite*)NULL); + if (!fgi) + { + fgi = new LLFloaterGroupInvite("groupinfo", + FGI_RECT, + FLOATER_TITLE, + group_id); + + impl::sInstances[group_id] = fgi; + + fgi->mImpl->mInvitePanelp->clear(); + } + + fgi->center(); + fgi->open(); + fgi->mImpl->mInvitePanelp->update(); +} |