diff options
| author | maxim_productengine <mnikolenko@productengine.com> | 2018-06-22 18:06:35 +0300 | 
|---|---|---|
| committer | maxim_productengine <mnikolenko@productengine.com> | 2018-06-22 18:06:35 +0300 | 
| commit | 9db683c13e67575bd347cf8a795f1a4ee148c4ea (patch) | |
| tree | 76aa2206614a59d6c637f3278046b158b88973b9 | |
| parent | e76abf22819c9f03f44e8453f2dc09ef20bbd0ea (diff) | |
SL-857 reverted
| -rw-r--r-- | indra/newview/llfloaterauction.cpp | 552 | ||||
| -rw-r--r-- | indra/newview/llfloaterauction.h | 86 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_auction.xml | 96 | 
3 files changed, 734 insertions, 0 deletions
| diff --git a/indra/newview/llfloaterauction.cpp b/indra/newview/llfloaterauction.cpp new file mode 100644 index 0000000000..56619e818a --- /dev/null +++ b/indra/newview/llfloaterauction.cpp @@ -0,0 +1,552 @@ +/**  + * @file llfloaterauction.cpp + * @author James Cook, Ian Wilkes + * @brief Implementation of the auction floater. + * + * $LicenseInfo:firstyear=2004&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$ + */ + +#include "llviewerprecompiledheaders.h" +#include "llfloaterauction.h" + +#include "llgl.h" +#include "llimagej2c.h" +#include "llimagetga.h" +#include "llparcel.h" +#include "llvfile.h" +#include "llvfs.h" +#include "llwindow.h" +#include "message.h" + +#include "llagent.h" +#include "llassetstorage.h" +#include "llcombobox.h" +#include "llestateinfomodel.h" +#include "llmimetypes.h" +#include "llnotifications.h" +#include "llnotificationsutil.h" +#include "llsavedsettingsglue.h" +#include "llviewertexturelist.h" +#include "llviewerparcelmgr.h" +#include "llviewerregion.h" +#include "lluictrlfactory.h" +#include "llviewerwindow.h" +#include "llviewerdisplay.h" +#include "llviewercontrol.h" +#include "llui.h" +#include "llrender.h" +#include "llsdutil.h" +#include "llsdutil_math.h" +#include "lltrans.h" +#include "llcorehttputil.h" + +///---------------------------------------------------------------------------- +/// Local function declarations, constants, enums, and typedefs +///---------------------------------------------------------------------------- + +void auction_j2c_upload_done(const LLUUID& asset_id, +							   void* user_data, S32 status, LLExtStat ext_status); +void auction_tga_upload_done(const LLUUID& asset_id, +							   void* user_data, S32 status, LLExtStat ext_status); + +///---------------------------------------------------------------------------- +/// Class llfloaterauction +///---------------------------------------------------------------------------- + +// Default constructor +LLFloaterAuction::LLFloaterAuction(const LLSD& key) +  : LLFloater(key), +	mParcelID(-1) +{ +	mCommitCallbackRegistrar.add("ClickSnapshot",	boost::bind(&LLFloaterAuction::onClickSnapshot, this)); +	mCommitCallbackRegistrar.add("ClickSellToAnyone",		boost::bind(&LLFloaterAuction::onClickSellToAnyone, this)); +	mCommitCallbackRegistrar.add("ClickStartAuction",		boost::bind(&LLFloaterAuction::onClickStartAuction, this)); +	mCommitCallbackRegistrar.add("ClickResetParcel",		boost::bind(&LLFloaterAuction::onClickResetParcel, this)); +} + +// Destroys the object +LLFloaterAuction::~LLFloaterAuction() +{ +} + +BOOL LLFloaterAuction::postBuild() +{ +	return TRUE; +} + +void LLFloaterAuction::onOpen(const LLSD& key) +{ +	initialize(); +} + +void LLFloaterAuction::initialize() +{ +	mParcelUpdateCapUrl.clear(); + +	mParcelp = LLViewerParcelMgr::getInstance()->getParcelSelection(); +	LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); +	LLParcel* parcelp = mParcelp->getParcel(); +	if(parcelp && region && !parcelp->getForSale()) +	{ +		mParcelHost = region->getHost(); +		mParcelID = parcelp->getLocalID(); +		mParcelUpdateCapUrl = region->getCapability("ParcelPropertiesUpdate"); + +		getChild<LLUICtrl>("parcel_text")->setValue(parcelp->getName()); +		getChildView("snapshot_btn")->setEnabled(TRUE); +		getChildView("reset_parcel_btn")->setEnabled(TRUE); +		getChildView("start_auction_btn")->setEnabled(TRUE); + +		U32 estate_id = LLEstateInfoModel::instance().getID(); +		// Only enable "Sell to Anyone" on Teen grid or if we don't know the ID yet +		getChildView("sell_to_anyone_btn")->setEnabled(estate_id == ESTATE_TEEN || estate_id == 0); +	} +	else +	{ +		mParcelHost.invalidate(); +		if(parcelp && parcelp->getForSale()) +		{ +			getChild<LLUICtrl>("parcel_text")->setValue(getString("already for sale")); +		} +		else +		{ +			getChild<LLUICtrl>("parcel_text")->setValue(LLStringUtil::null); +		} +		mParcelID = -1; +		getChildView("snapshot_btn")->setEnabled(false); +		getChildView("reset_parcel_btn")->setEnabled(false); +		getChildView("sell_to_anyone_btn")->setEnabled(false); +		getChildView("start_auction_btn")->setEnabled(false); +	} + +	mImageID.setNull(); +	mImage = NULL; +} + +void LLFloaterAuction::draw() +{ +	LLFloater::draw(); + +	if(!isMinimized() && mImage.notNull())  +	{ +		LLView* snapshot_icon = findChildView("snapshot_icon"); +		if (snapshot_icon) +		{ +			LLRect rect = snapshot_icon->getRect(); +			{ +				gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); +				gl_rect_2d(rect, LLColor4(0.f, 0.f, 0.f, 1.f)); +				rect.stretch(-1); +			} +			{ +				LLGLSUIDefault gls_ui; +				gGL.color3f(1.f, 1.f, 1.f); +				gl_draw_scaled_image(rect.mLeft, +									 rect.mBottom, +									 rect.getWidth(), +									 rect.getHeight(), +									 mImage); +			} +		} +	} +} + + +// static +void LLFloaterAuction::onClickSnapshot(void* data) +{ +	LLFloaterAuction* self = (LLFloaterAuction*)(data); + +	LLPointer<LLImageRaw> raw = new LLImageRaw; + +	gForceRenderLandFence = self->getChild<LLUICtrl>("fence_check")->getValue().asBoolean(); +	BOOL success = gViewerWindow->rawSnapshot(raw, +											  gViewerWindow->getWindowWidthScaled(), +											  gViewerWindow->getWindowHeightScaled(), +											  TRUE, FALSE, +											  FALSE, FALSE); +	gForceRenderLandFence = FALSE; + +	if (success) +	{ +		self->mTransactionID.generate(); +		self->mImageID = self->mTransactionID.makeAssetID(gAgent.getSecureSessionID()); + +		if(!gSavedSettings.getBOOL("QuietSnapshotsToDisk")) +		{ +			gViewerWindow->playSnapshotAnimAndSound(); +		} +		LL_INFOS() << "Writing TGA..." << LL_ENDL; + +		LLPointer<LLImageTGA> tga = new LLImageTGA; +		tga->encode(raw); +		LLVFile::writeFile(tga->getData(), tga->getDataSize(), gVFS, self->mImageID, LLAssetType::AT_IMAGE_TGA); +		 +		raw->biasedScaleToPowerOfTwo(LLViewerTexture::MAX_IMAGE_SIZE_DEFAULT); + +		LL_INFOS() << "Writing J2C..." << LL_ENDL; + +		LLPointer<LLImageJ2C> j2c = new LLImageJ2C; +		j2c->encode(raw, 0.0f); +		LLVFile::writeFile(j2c->getData(), j2c->getDataSize(), gVFS, self->mImageID, LLAssetType::AT_TEXTURE); + +		self->mImage = LLViewerTextureManager::getLocalTexture((LLImageRaw*)raw, FALSE); +		gGL.getTexUnit(0)->bind(self->mImage); +		self->mImage->setAddressMode(LLTexUnit::TAM_CLAMP); +	} +	else +	{ +		LL_WARNS() << "Unable to take snapshot" << LL_ENDL; +	} +} + +// static +void LLFloaterAuction::onClickStartAuction(void* data) +{ +	LLFloaterAuction* self = (LLFloaterAuction*)(data); + +	if(self->mImageID.notNull()) +	{ +		LLSD parcel_name = self->getChild<LLUICtrl>("parcel_text")->getValue(); + +	// create the asset +		std::string* name = new std::string(parcel_name.asString()); +		gAssetStorage->storeAssetData(self->mTransactionID, LLAssetType::AT_IMAGE_TGA, +									&auction_tga_upload_done, +									(void*)name, +									FALSE); +		self->getWindow()->incBusyCount(); + +		std::string* j2c_name = new std::string(parcel_name.asString()); +		gAssetStorage->storeAssetData(self->mTransactionID, LLAssetType::AT_TEXTURE, +								   &auction_j2c_upload_done, +								   (void*)j2c_name, +								   FALSE); +		self->getWindow()->incBusyCount(); + +		LLNotificationsUtil::add("UploadingAuctionSnapshot"); + +	} +	LLMessageSystem* msg = gMessageSystem; + +	msg->newMessage("ViewerStartAuction"); + +	msg->nextBlock("AgentData"); +	msg->addUUID("AgentID", gAgent.getID()); +	msg->addUUID("SessionID", gAgent.getSessionID()); +	msg->nextBlock("ParcelData"); +	msg->addS32("LocalID", self->mParcelID); +	msg->addUUID("SnapshotID", self->mImageID); +	msg->sendReliable(self->mParcelHost); + +	// clean up floater, and get out +	self->cleanupAndClose(); +} + + +void LLFloaterAuction::cleanupAndClose() +{ +	mImageID.setNull(); +	mImage = NULL; +	mParcelID = -1; +	mParcelHost.invalidate(); +	closeFloater(); +} + + + +// static glue +void LLFloaterAuction::onClickResetParcel(void* data) +{ +	LLFloaterAuction* self = (LLFloaterAuction*)(data); +	if (self) +	{ +		self->doResetParcel(); +	} +} + + +// Reset all the values for the parcel in preparation for a sale +void LLFloaterAuction::doResetParcel() +{ +	LLParcel* parcelp = mParcelp->getParcel(); +	LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + +	if (parcelp +		&& region +		&& !mParcelUpdateCapUrl.empty()) +	{ +		LLSD body; +		std::string empty; + +		// request new properties update from simulator +		U32 message_flags = 0x01; +		body["flags"] = ll_sd_from_U32(message_flags); + +		// Set all the default parcel properties for auction +		body["local_id"] = parcelp->getLocalID(); + +		U32 parcel_flags = PF_ALLOW_LANDMARK | +						   PF_ALLOW_FLY	| +						   PF_CREATE_GROUP_OBJECTS | +						   PF_ALLOW_ALL_OBJECT_ENTRY | +						   PF_ALLOW_GROUP_OBJECT_ENTRY | +						   PF_ALLOW_GROUP_SCRIPTS | +						   PF_RESTRICT_PUSHOBJECT | +						   PF_SOUND_LOCAL | +						   PF_ALLOW_VOICE_CHAT | +						   PF_USE_ESTATE_VOICE_CHAN; + +		body["parcel_flags"] = ll_sd_from_U32(parcel_flags); +		 +		// Build a parcel name like "Ahern (128,128) PG 4032m" +		std::ostringstream parcel_name; +		LLVector3 center_point( parcelp->getCenterpoint() ); +		center_point.snap(0);		// Get rid of fractions +		parcel_name << region->getName()  +					<< " (" +					<< (S32) center_point.mV[VX] +					<< "," +					<< (S32) center_point.mV[VY]						 +					<< ") " +					<< region->getSimAccessString() +					<< " " +					<< parcelp->getArea() +					<< "m"; + +		std::string new_name(parcel_name.str().c_str()); +		body["name"] = new_name; +		getChild<LLUICtrl>("parcel_text")->setValue(new_name);	// Set name in dialog as well, since it won't get updated otherwise + +		body["sale_price"] = (S32) 0; +		body["description"] = empty; +		body["music_url"] = empty; +		body["media_url"] = empty; +		body["media_desc"] = empty; +		body["media_type"] = LLMIMETypes::getDefaultMimeType(); +		body["media_width"] = (S32) 0; +		body["media_height"] = (S32) 0; +		body["auto_scale"] = (S32) 0; +		body["media_loop"] = (S32) 0; +		body["obscure_media"] = (S32) 0; // OBSOLETE - no longer used +		body["obscure_music"] = (S32) 0; // OBSOLETE - no longer used +		body["media_id"] = LLUUID::null; +		body["group_id"] = MAINTENANCE_GROUP_ID;	// Use maintenance group +		body["pass_price"] = (S32) 10;		// Defaults to $10 +		body["pass_hours"] = 0.0f; +		body["category"] = (U8) LLParcel::C_NONE; +		body["auth_buyer_id"] = LLUUID::null; +		body["snapshot_id"] = LLUUID::null; +		body["user_location"] = ll_sd_from_vector3( LLVector3::zero ); +		body["user_look_at"] = ll_sd_from_vector3( LLVector3::zero ); +		body["landing_type"] = (U8) LLParcel::L_DIRECT; + +		LL_INFOS() << "Sending parcel update to reset for auction via capability to: " +			<< mParcelUpdateCapUrl << LL_ENDL; + +        LLCoreHttpUtil::HttpCoroutineAdapter::messageHttpPost(mParcelUpdateCapUrl, body, +            "Parcel reset for auction", +            "Parcel not set for auction."); + +		// Send a message to clear the object return time +		LLMessageSystem *msg = gMessageSystem; +		msg->newMessageFast(_PREHASH_ParcelSetOtherCleanTime); +		msg->nextBlockFast(_PREHASH_AgentData); +		msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID()); +		msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID()); +		msg->nextBlockFast(_PREHASH_ParcelData); +		msg->addS32Fast(_PREHASH_LocalID, parcelp->getLocalID()); +		msg->addS32Fast(_PREHASH_OtherCleanTime, 5);			// 5 minute object auto-return + +		msg->sendReliable(region->getHost()); + +		// Clear the access lists +		clearParcelAccessList(parcelp, region, AL_ACCESS); +		clearParcelAccessList(parcelp, region, AL_BAN); +		clearParcelAccessList(parcelp, region, AL_ALLOW_EXPERIENCE); +		clearParcelAccessList(parcelp, region, AL_BLOCK_EXPERIENCE); +	} +} + + + +void LLFloaterAuction::clearParcelAccessList(LLParcel* parcel, LLViewerRegion* region, U32 list) +{ +	if (!region || !parcel) return; + +	LLUUID transactionUUID; +	transactionUUID.generate(); + +	LLMessageSystem* msg = gMessageSystem; + +	msg->newMessageFast(_PREHASH_ParcelAccessListUpdate); +	msg->nextBlockFast(_PREHASH_AgentData); +	msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID() ); +	msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID() ); +	msg->nextBlockFast(_PREHASH_Data); +	msg->addU32Fast(_PREHASH_Flags, list); +	msg->addS32(_PREHASH_LocalID, parcel->getLocalID() ); +	msg->addUUIDFast(_PREHASH_TransactionID, transactionUUID); +	msg->addS32Fast(_PREHASH_SequenceID, 1);			// sequence_id +	msg->addS32Fast(_PREHASH_Sections, 0);				// num_sections + +	// pack an empty block since there will be no data +	msg->nextBlockFast(_PREHASH_List); +	msg->addUUIDFast(_PREHASH_ID,  LLUUID::null ); +	msg->addS32Fast(_PREHASH_Time, 0 ); +	msg->addU32Fast(_PREHASH_Flags,	0 ); + +	msg->sendReliable( region->getHost() ); +} + + + +// static - 'Sell to Anyone' clicked, throw up a confirmation dialog +void LLFloaterAuction::onClickSellToAnyone(void* data) +{ +	LLFloaterAuction* self = (LLFloaterAuction*)(data); +	if (self) +	{ +		LLParcel* parcelp = self->mParcelp->getParcel(); + +		// Do a confirmation +		S32 sale_price = parcelp->getArea();	// Selling for L$1 per meter +		S32 area = parcelp->getArea(); + +		LLSD args; +		args["LAND_SIZE"] = llformat("%d", area); +		args["SALE_PRICE"] = llformat("%d", sale_price); +		args["NAME"] = LLTrans::getString("Anyone"); + +		LLNotification::Params params("ConfirmLandSaleChange");	// Re-use existing dialog +		params.substitutions(args) +			.functor.function(boost::bind(&LLFloaterAuction::onSellToAnyoneConfirmed, self, _1, _2)); + +		params.name("ConfirmLandSaleToAnyoneChange"); +		 +		// ask away +		LLNotifications::instance().add(params); +	} +} + + +// Sell confirmation clicked +bool LLFloaterAuction::onSellToAnyoneConfirmed(const LLSD& notification, const LLSD& response)	 +{ +	S32 option = LLNotificationsUtil::getSelectedOption(notification, response); +	if (option == 0) +	{ +		doSellToAnyone(); +	} + +	return false; +} + + + +// Reset all the values for the parcel in preparation for a sale +void LLFloaterAuction::doSellToAnyone() +{ +	LLParcel* parcelp = mParcelp->getParcel(); +	LLViewerRegion* region = LLViewerParcelMgr::getInstance()->getSelectionRegion(); + +	if (parcelp +		&& region +		&& !mParcelUpdateCapUrl.empty()) +	{ +		LLSD body; +		std::string empty; + +		// request new properties update from simulator +		U32 message_flags = 0x01; +		body["flags"] = ll_sd_from_U32(message_flags); + +		// Set all the default parcel properties for auction +		body["local_id"] = parcelp->getLocalID(); + +		// Set 'for sale' flag +		U32 parcel_flags = parcelp->getParcelFlags() | PF_FOR_SALE; +		// Ensure objects not included +		parcel_flags &= ~PF_FOR_SALE_OBJECTS; +		body["parcel_flags"] = ll_sd_from_U32(parcel_flags); +		 +		body["sale_price"] = parcelp->getArea();	// Sell for L$1 per square meter +		body["auth_buyer_id"] = LLUUID::null;		// To anyone + +		LL_INFOS() << "Sending parcel update to sell to anyone for L$1 via capability to: " +			<< mParcelUpdateCapUrl << LL_ENDL; + +        LLCoreHttpUtil::HttpCoroutineAdapter::messageHttpPost(mParcelUpdateCapUrl, body, +            "Parcel set as sell to everyone.", +            "Parcel sell to everyone failed."); + +		// clean up floater, and get out +		cleanupAndClose(); +	} +} + + +///---------------------------------------------------------------------------- +/// Local function definitions +///---------------------------------------------------------------------------- + +void auction_tga_upload_done(const LLUUID& asset_id, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed) +{ +	std::string* name = (std::string*)(user_data); +	LL_INFOS() << "Upload of asset '" << *name << "' " << asset_id +			<< " returned " << status << LL_ENDL; +	delete name; + +	gViewerWindow->getWindow()->decBusyCount(); + +	if (0 == status) +	{ +		LLNotificationsUtil::add("UploadWebSnapshotDone"); +	} +	else +	{ +		LLSD args; +		args["REASON"] = std::string(LLAssetStorage::getErrorString(status)); +		LLNotificationsUtil::add("UploadAuctionSnapshotFail", args); +	} +} + +void auction_j2c_upload_done(const LLUUID& asset_id, void* user_data, S32 status, LLExtStat ext_status) // StoreAssetData callback (fixed) +{ +	std::string* name = (std::string*)(user_data); +	LL_INFOS() << "Upload of asset '" << *name << "' " << asset_id +			<< " returned " << status << LL_ENDL; +	delete name; + +	gViewerWindow->getWindow()->decBusyCount(); + +	if (0 == status) +	{ +		LLNotificationsUtil::add("UploadSnapshotDone"); +	} +	else +	{ +		LLSD args; +		args["REASON"] = std::string(LLAssetStorage::getErrorString(status)); +		LLNotificationsUtil::add("UploadAuctionSnapshotFail", args); +	} +} diff --git a/indra/newview/llfloaterauction.h b/indra/newview/llfloaterauction.h new file mode 100644 index 0000000000..c83a11ba8b --- /dev/null +++ b/indra/newview/llfloaterauction.h @@ -0,0 +1,86 @@ +/**  + * @file llfloaterauction.h + * @author James Cook, Ian Wilkes + * @brief llfloaterauction class header file + * + * $LicenseInfo:firstyear=2004&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$ + */ + +#ifndef LL_LLFLOATERAUCTION_H +#define LL_LLFLOATERAUCTION_H + +#include "llfloater.h" +#include "lluuid.h" +#include "llpointer.h" +#include "llviewertexture.h" + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// Class LLFloaterAuction +// +// Class which holds the functionality to start auctions. +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +class LLParcelSelection; +class LLParcel; +class LLViewerRegion; + +class LLFloaterAuction : public LLFloater +{ +	friend class LLFloaterReg; +public: +	// LLFloater interface +	/*virtual*/ void onOpen(const LLSD& key); +	/*virtual*/ void draw(); + +private: +	 +	LLFloaterAuction(const LLSD& key); +	~LLFloaterAuction(); +	 +	void initialize(); + +	static void onClickSnapshot(void* data); +	static void onClickResetParcel(void* data); +	static void onClickSellToAnyone(void* data);		// Sell to anyone clicked +	bool onSellToAnyoneConfirmed(const LLSD& notification, const LLSD& response);	// Sell confirmation clicked +	static void onClickStartAuction(void* data); + +	/*virtual*/ BOOL postBuild(); + +	void doResetParcel(); +	void doSellToAnyone(); +	void clearParcelAccessList( LLParcel* parcel, LLViewerRegion* region, U32 list); +	void cleanupAndClose(); + +private: + +	LLTransactionID mTransactionID; +	LLAssetID mImageID; +	LLPointer<LLViewerTexture> mImage; +	LLSafeHandle<LLParcelSelection> mParcelp; +	S32 mParcelID; +	LLHost mParcelHost; + +	std::string mParcelUpdateCapUrl;	// "ParcelPropertiesUpdate" capability +}; + + +#endif // LL_LLFLOATERAUCTION_H diff --git a/indra/newview/skins/default/xui/en/floater_auction.xml b/indra/newview/skins/default/xui/en/floater_auction.xml new file mode 100644 index 0000000000..9c6d114c4c --- /dev/null +++ b/indra/newview/skins/default/xui/en/floater_auction.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<floater + legacy_header_height="18" + can_resize="true" + height="412" + layout="topleft" + min_height="412" + min_width="420" + name="floater_auction" + help_topic="floater_auction" + title="START LINDEN LAND SALE" + width="420"> +    <floater.string +     name="already for sale"> +        You cannot auction parcels which are already for sale. +    </floater.string> +    <icon +     bottom="280" +     follows="left|right|top|bottom" +     layout="topleft" +     left="4" +     name="snapshot_icon" +     right="-4" +     top="24" /> +    <text +     follows="left|right|bottom" +     height="16" +     layout="topleft" +     left_delta="0" +     name="parcel_text" +     top_pad="12" +     width="400" /> +    <check_box +     control_name="AuctionShowFence"  +     follows="left|bottom" +     height="16" +     initial_value="true" +     label="Include yellow selection fence" +     layout="topleft" +     left_delta="0" +     name="fence_check" +     top_pad="12" +     width="199" /> +    <button +     follows="left|bottom" +     height="20" +     label="Snapshot" +     label_selected="Snapshot" +     layout="topleft" +     left_delta="0" +     name="snapshot_btn" +     top_pad="4" +     width="150"> +      <button.commit_callback +         function="ClickSnapshot" /> +    </button> +    <button +     follows="left|bottom" +     height="20" +     label="Sell to Anyone" +     label_selected="Sell to Anyone" +     layout="topleft" +     left_delta="0" +     name="sell_to_anyone_btn" +     top_pad="4" +     width="150"> +      <button.commit_callback +         function="ClickSellToAnyone" /> +    </button> +    <button +     follows="left|bottom" +     height="20" +     label="Clear Settings" +     label_selected="Clear Settings" +     layout="topleft" +     left_delta="0" +     name="reset_parcel_btn" +     top_pad="4" +     width="150"> +      <button.commit_callback +         function="ClickResetParcel" /> +    </button> +    <button +     follows="left|bottom" +     height="20" +     label="Start Auction" +     label_selected="Start Auction" +     layout="topleft" +     left_pad="4" +     name="start_auction_btn" +     top_delta="0" +     width="150"> +      <button.commit_callback +          function="ClickStartAuction" /> +    </button> +</floater> | 
