diff options
Diffstat (limited to 'indra/newview/llfloaterparcel.cpp')
-rw-r--r-- | indra/newview/llfloaterparcel.cpp | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/indra/newview/llfloaterparcel.cpp b/indra/newview/llfloaterparcel.cpp new file mode 100644 index 0000000000..e2be784116 --- /dev/null +++ b/indra/newview/llfloaterparcel.cpp @@ -0,0 +1,128 @@ +/** + * @file llfloaterparcel.cpp + * @brief LLFloaterParcel class implementation + * Parcel information as shown in a floating window from secondlife:// command + * handler. + * + * $LicenseInfo:firstyear=2007&license=viewergpl$ + * + * Copyright (c) 2007-2009, Linden Research, Inc. + * + * Second Life Viewer Source Code + * The source code in this file ("Source Code") is provided by Linden Lab + * to you under the terms of the GNU General Public License, version 2.0 + * ("GPL"), unless you have obtained a separate licensing agreement + * ("Other License"), formally executed by you and Linden Lab. Terms of + * the GPL can be found in doc/GPL-license.txt in this distribution, or + * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2 + * + * There are special exceptions to the terms and conditions of the GPL as + * it is applied to this Source Code. View the full text of the exception + * in the file doc/FLOSS-exception.txt in this software distribution, or + * online at + * http://secondlifegrid.net/programs/open_source/licensing/flossexception + * + * By copying, modifying or distributing this software, you acknowledge + * that you have read and understood your obligations described above, + * and agree to abide by those obligations. + * + * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO + * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, + * COMPLETENESS OR PERFORMANCE. + * $/LicenseInfo$ + */ +#include "llviewerprecompiledheaders.h" + +#include "llfloaterparcel.h" + +#include "llfloaterreg.h" + +// viewer project includes +#include "llcommandhandler.h" +#include "llpanelplace.h" +#include "llsidetray.h" + +// linden library includes +#include "lluuid.h" +#include "lluictrlfactory.h" + +//----------------------------------------------------------------------------- +// Globals +//----------------------------------------------------------------------------- + +class LLParcelHandler : public LLCommandHandler +{ +public: + // requires trusted browser to trigger + LLParcelHandler() : LLCommandHandler("parcel", UNTRUSTED_THROTTLE) { } + bool handle(const LLSD& params, const LLSD& query_map, + LLMediaCtrl* web) + { + if (params.size() < 2) + { + return false; + } + LLUUID parcel_id; + if (!parcel_id.set(params[0], FALSE)) + { + return false; + } + if (params[1].asString() == "about") + { + if (parcel_id.notNull()) + { + LLSD key; + key["type"] = "remote_place"; + key["id"] = parcel_id; + LLSideTray::getInstance()->showPanel("panel_places", key); + return true; + } + } + return false; + } +}; +LLParcelHandler gParcelHandler; + +//----------------------------------------------------------------------------- +// Member functions +//----------------------------------------------------------------------------- + +//---------------------------------------------------------------------------- + +void* LLFloaterParcelInfo::createPanelPlace(void* data) +{ + LLFloaterParcelInfo* self = (LLFloaterParcelInfo*)data; + self->mPanelParcelp = new LLPanelPlace(); // allow edit self + LLUICtrlFactory::getInstance()->buildPanel(self->mPanelParcelp, "panel_place.xml"); + return self->mPanelParcelp; +} + +//---------------------------------------------------------------------------- + + +LLFloaterParcelInfo::LLFloaterParcelInfo(const LLSD& parcel_id) +: LLFloater(parcel_id), + mParcelID( parcel_id.asUUID() ), + mPanelParcelp(NULL) +{ + mFactoryMap["place_details_panel"] = LLCallbackMap(LLFloaterParcelInfo::createPanelPlace, this); +// LLUICtrlFactory::getInstance()->buildFloater(this, "floater_preview_url.xml"); +} + +// virtual +LLFloaterParcelInfo::~LLFloaterParcelInfo() +{ + +} + +BOOL LLFloaterParcelInfo::postBuild() +{ + if (mPanelParcelp) + { + mPanelParcelp->setParcelID(mParcelID); + } + center(); + return LLFloater::postBuild(); +} + + |