llfloaterparcel.cpp

Go to the documentation of this file.
00001 
00023 #include "llviewerprecompiledheaders.h"
00024 
00025 #include "llfloaterparcel.h"
00026 
00027 // viewer project includes
00028 #include "llcommandhandler.h"
00029 #include "llpanelplace.h"
00030 #include "llvieweruictrlfactory.h"
00031 
00032 // linden library includes
00033 #include "lluuid.h"
00034 
00035 //-----------------------------------------------------------------------------
00036 // Globals
00037 //-----------------------------------------------------------------------------
00038 
00039 LLMap< const LLUUID, LLFloaterParcelInfo* > gPlaceInfoInstances;
00040 
00041 class LLParcelHandler : public LLCommandHandler
00042 {
00043 public:
00044         LLParcelHandler() : LLCommandHandler("parcel") { }
00045         bool handle(const std::vector<std::string>& params)
00046         {
00047                 if (params.size() < 2)
00048                 {
00049                         return false;
00050                 }
00051                 LLUUID parcel_id;
00052                 if (!parcel_id.set(params[0], FALSE))
00053                 {
00054                         return false;
00055                 }
00056                 if (params[1] == "about")
00057                 {
00058                         LLFloaterParcelInfo::show(parcel_id);
00059                         return true;
00060                 }
00061                 return false;
00062         }
00063 };
00064 LLParcelHandler gParcelHandler;
00065 
00066 //-----------------------------------------------------------------------------
00067 // Member functions
00068 //-----------------------------------------------------------------------------
00069 
00070 //----------------------------------------------------------------------------
00071 
00072 void*   LLFloaterParcelInfo::createPanelPlace(void*     data)
00073 {
00074         LLFloaterParcelInfo* self = (LLFloaterParcelInfo*)data;
00075         self->mPanelParcelp = new LLPanelPlace(); // allow edit self
00076         gUICtrlFactory->buildPanel(self->mPanelParcelp, "panel_place.xml");
00077         return self->mPanelParcelp;
00078 }
00079 
00080 //----------------------------------------------------------------------------
00081 
00082 
00083 LLFloaterParcelInfo::LLFloaterParcelInfo(const std::string& name, const LLUUID &parcel_id)
00084 :       LLFloater(name),
00085         mParcelID( parcel_id )
00086 {
00087         mFactoryMap["place_details_panel"] = LLCallbackMap(LLFloaterParcelInfo::createPanelPlace, this);
00088         gUICtrlFactory->buildFloater(this, "floater_preview_url.xml", &getFactoryMap());
00089         gPlaceInfoInstances.addData(parcel_id, this);
00090 }
00091 
00092 // virtual
00093 LLFloaterParcelInfo::~LLFloaterParcelInfo()
00094 {
00095         // child views automatically deleted
00096         gPlaceInfoInstances.removeData(mParcelID);
00097 
00098 }
00099 
00100 void LLFloaterParcelInfo::displayParcelInfo(const LLUUID& parcel_id)
00101 {
00102         mPanelParcelp->setParcelID(parcel_id);
00103 }
00104 
00105 // static
00106 LLFloaterParcelInfo* LLFloaterParcelInfo::show(const LLUUID &parcel_id)
00107 {
00108         if (parcel_id.isNull())
00109         {
00110                 return NULL;
00111         }
00112 
00113         LLFloaterParcelInfo *floater;
00114         if (gPlaceInfoInstances.checkData(parcel_id))
00115         {
00116                 // ...bring that window to front
00117                 floater = gPlaceInfoInstances.getData(parcel_id);
00118                 floater->open();        /*Flawfinder: ignore*/
00119                 floater->setFrontmost(true);
00120         }
00121         else
00122         {
00123                 floater =  new LLFloaterParcelInfo("parcelinfo", parcel_id );
00124                 floater->center();
00125                 floater->open();        /*Flawfinder: ignore*/
00126                 floater->displayParcelInfo(parcel_id);
00127                 floater->setFrontmost(true);
00128         }
00129 
00130         return floater;
00131 }
00132 
00133 

Generated on Thu Jul 1 06:08:35 2010 for Second Life Viewer by  doxygen 1.4.7