Files
SingularityViewer/indra/newview/llpanelclassified.h
2014-07-09 16:18:19 -04:00

192 lines
5.2 KiB
C++

/**
* @file llpanelclassified.h
* @brief LLPanelClassifiedInfo class definition
*
* $LicenseInfo:firstyear=2005&license=viewergpl$
*
* Copyright (c) 2005-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$
*/
// Display of a classified used both for the global view in the
// Find directory, and also for each individual user's classified in their
// profile.
#ifndef LL_LLPANELCLASSIFIED_H
#define LL_LLPANELCLASSIFIED_H
#include "llavatarpropertiesprocessor.h"
#include "llclassifiedinfo.h"
#include "v3dmath.h"
#include "lluuid.h"
#include "llfloater.h"
class LLButton;
class LLCheckBoxCtrl;
class LLComboBox;
class LLLineEditor;
class LLTextBox;
class LLTextEditor;
class LLTextureCtrl;
class LLUICtrl;
class LLPanelClassifiedInfo : public LLPanel, public LLAvatarPropertiesObserver
{
public:
LLPanelClassifiedInfo(bool in_finder, bool from_search);
/*virtual*/ ~LLPanelClassifiedInfo();
void reset();
/*virtual*/ BOOL postBuild();
/*virtual*/ void draw();
/*virtual*/ void refresh();
/*virtual*/ void processProperties(void* data, EAvatarProcessorType type);
void apply();
// If can close, return TRUE. If cannot close, pop save/discard dialog
// and return FALSE.
BOOL canClose();
// Setup a new classified, including creating an id, giving a sane
// initial position, etc.
void initNewClassified();
void setClassifiedID(const LLUUID& id);
void setClickThroughText(const std::string& text);
static void setClickThrough(const LLUUID& classified_id,
S32 teleport, S32 map, S32 profile, bool from_new_table);
// check that the title is valid (E.G. starts with a number or letter)
BOOL titleIsValid();
// Schedules the panel to request data
// from the server next time it is drawn.
void markForServerRequest();
std::string getClassifiedName();
const LLUUID& getClassifiedID() const { return mClassifiedID; }
void sendClassifiedInfoRequest();
void sendClassifiedInfoUpdate();
void resetDirty();
// Confirmation dialogs flow in this order
bool confirmMature(const LLSD& notification, const LLSD& response);
void gotMature();
void callbackGotPriceForListing(const std::string& text);
bool confirmPublish(const LLSD& notification, const LLSD& response);
void sendClassifiedClickMessage(const std::string& type);
protected:
bool saveCallback(const LLSD& notification, const LLSD& response);
void onClickUpdate();
void onClickTeleport();
void onClickMap();
void onClickProfile();
void onClickSet();
void setDefaultAccessCombo(); // Default AO and PG regions to proper classified access
BOOL checkDirty(); // Update and return mDirty
protected:
bool mInFinder;
bool mFromSearch; // from web-based "All" search sidebar
BOOL mDirty;
bool mForceClose;
bool mLocationChanged;
LLUUID mClassifiedID;
LLUUID mRequestedID;
LLUUID mCreatorID;
LLUUID mParcelID;
S32 mPriceForListing;
// Needed for stat tracking
S32 mTeleportClicksOld;
S32 mMapClicksOld;
S32 mProfileClicksOld;
S32 mTeleportClicksNew;
S32 mMapClicksNew;
S32 mProfileClicksNew;
// Data will be requested on first draw
BOOL mDataRequested;
// For avatar panel classifieds only, has the user been charged
// yet for this classified? That is, have they saved once?
BOOL mPaidFor;
std::string mSimName;
LLVector3d mPosGlobal;
// Values the user may change
LLTextureCtrl* mSnapshotCtrl;
LLLineEditor* mNameEditor;
LLTextEditor* mDescEditor;
LLLineEditor* mLocationEditor;
LLComboBox* mCategoryCombo;
LLComboBox* mMatureCombo;
LLCheckBoxCtrl* mAutoRenewCheck;
LLButton* mUpdateBtn;
LLButton* mTeleportBtn;
LLButton* mMapBtn;
LLButton* mProfileBtn;
LLTextBox* mInfoText;
LLButton* mSetBtn;
LLTextBox* mClickThroughText;
LLRect mSnapshotSize;
typedef std::list<LLPanelClassifiedInfo*> panel_list_t;
static panel_list_t sAllPanels;
};
class LLFloaterPriceForListing
: public LLFloater
{
public:
typedef boost::signals2::signal<void(const std::string& value)> signal_t;
LLFloaterPriceForListing(const signal_t::slot_type& cb);
virtual ~LLFloaterPriceForListing();
virtual BOOL postBuild();
private:
void buttonCore();
signal_t* mSignal;
};
#endif // LL_LLPANELCLASSIFIED_H