166 lines
4.5 KiB
C++
166 lines
4.5 KiB
C++
/**
|
|
* @file fsfloatergroup.cpp
|
|
* @brief Class for the standalone group details floater in Firestorm
|
|
*
|
|
* $LicenseInfo:firstyear=2012&license=viewerlgpl$
|
|
* Phoenix Firestorm Viewer Source Code
|
|
* Copyright (c) 2012 Ansariel Hiller @ Second Life
|
|
*
|
|
* 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
|
|
*
|
|
* The Phoenix Firestorm Project, Inc., 1831 Oakwood Drive, Fairmont, Minnesota 56031-3225 USA
|
|
* http://www.firestormviewer.org
|
|
* $/LicenseInfo$
|
|
*/
|
|
|
|
#include "llviewerprecompiledheaders.h"
|
|
|
|
#include "fsfloatergroup.h"
|
|
|
|
#include "llfloaterreg.h"
|
|
#include "llpanelgroup.h"
|
|
#include "llpanelgroupcreate.h"
|
|
|
|
FSFloaterGroup::FSFloaterGroup(const LLSD& seed)
|
|
: LLFloater(seed),
|
|
mGroupPanel(nullptr),
|
|
mGroupCreatePanel(nullptr),
|
|
mIsCreateGroup(false)
|
|
{
|
|
}
|
|
|
|
FSFloaterGroup::~FSFloaterGroup()
|
|
{
|
|
}
|
|
|
|
bool FSFloaterGroup::postBuild()
|
|
{
|
|
mGroupPanel = findChild<LLPanelGroup>("panel_group_info_sidetray");
|
|
mGroupCreatePanel = findChild<LLPanelGroupCreate>("panel_group_creation_sidetray");
|
|
if (!mGroupPanel || !mGroupCreatePanel)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void FSFloaterGroup::onOpen(const LLSD& key)
|
|
{
|
|
// openFloater() sets the key again - we only want the group id as key, so set it again!
|
|
setKey(LLSD().with("group_id", key.get("group_id").asUUID()));
|
|
mIsCreateGroup = (key.has("action") && key.get("action").asString() == "create");
|
|
|
|
if (mIsCreateGroup)
|
|
{
|
|
mGroupCreatePanel->onOpen(key);
|
|
mGroupCreatePanel->setVisible(true);
|
|
mGroupPanel->setVisible(false);
|
|
setTitle(getString("title_create_group"));
|
|
}
|
|
else
|
|
{
|
|
mGroupPanel->onOpen(key);
|
|
mGroupPanel->setVisible(true);
|
|
mGroupCreatePanel->setVisible(false);
|
|
mGroupPanel->getChildView("header_container")->setVisible(false);
|
|
}
|
|
}
|
|
|
|
void FSFloaterGroup::setGroup(const LLUUID& group_id)
|
|
{
|
|
mGroupPanel->setGroupID(group_id);
|
|
}
|
|
|
|
void FSFloaterGroup::setGroupName(const std::string& group_name)
|
|
{
|
|
if (mIsCreateGroup)
|
|
{
|
|
setTitle(getString("title_create_group"));
|
|
}
|
|
else
|
|
{
|
|
if (group_name.empty())
|
|
{
|
|
setTitle(getString("title_loading"));
|
|
}
|
|
else
|
|
{
|
|
LLStringUtil::format_map_t args;
|
|
args["[NAME]"] = group_name.c_str();
|
|
setTitle(getString("title", args));
|
|
}
|
|
}
|
|
}
|
|
|
|
// static
|
|
FSFloaterGroup* FSFloaterGroup::openGroupFloater(const LLUUID& group_id)
|
|
{
|
|
return FSFloaterGroup::openGroupFloater(LLSD().with("group_id", group_id));
|
|
}
|
|
|
|
// static
|
|
FSFloaterGroup* FSFloaterGroup::openGroupFloater(const LLSD& params)
|
|
{
|
|
if (!params.has("group_id"))
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
FSFloaterGroup* floater = LLFloaterReg::getTypedInstance<FSFloaterGroup>("fs_group", LLSD().with("group_id", params.get("group_id").asUUID()));
|
|
if (floater->getVisible())
|
|
{
|
|
// If floater is already open, simply call onOpen.
|
|
// This will pass-through the parameters to the group panel.
|
|
floater->onOpen(params);
|
|
}
|
|
else
|
|
{
|
|
floater->openFloater(params);
|
|
}
|
|
|
|
return floater;
|
|
}
|
|
|
|
// static
|
|
void FSFloaterGroup::closeGroupFloater(const LLUUID& group_id)
|
|
{
|
|
LLFloaterReg::hideInstance("fs_group", LLSD().with("group_id", group_id));
|
|
}
|
|
|
|
// static
|
|
bool FSFloaterGroup::isFloaterVisible(const LLUUID& group_id)
|
|
{
|
|
LLFloater* inst = LLFloaterReg::findInstance("fs_group", LLSD().with("group_id", group_id));
|
|
if (inst)
|
|
{
|
|
return inst->getVisible();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
// static
|
|
FSFloaterGroup* FSFloaterGroup::getInstance(const LLUUID& group_id)
|
|
{
|
|
return LLFloaterReg::getTypedInstance<FSFloaterGroup>("fs_group", LLSD().with("group_id", group_id));
|
|
}
|
|
|
|
// static
|
|
FSFloaterGroup* FSFloaterGroup::findInstance(const LLUUID& group_id)
|
|
{
|
|
return LLFloaterReg::findTypedInstance<FSFloaterGroup>("fs_group", LLSD().with("group_id", group_id));
|
|
}
|