summaryrefslogtreecommitdiff
path: root/indra/newview/llfloatergroupinvite.cpp
diff options
context:
space:
mode:
authorJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
committerJames Cook <james@lindenlab.com>2007-01-02 08:33:20 +0000
commit420b91db29485df39fd6e724e782c449158811cb (patch)
treeb471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llfloatergroupinvite.cpp
Print done when done.
Diffstat (limited to 'indra/newview/llfloatergroupinvite.cpp')
-rw-r--r--indra/newview/llfloatergroupinvite.cpp118
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();
+}