llfloaterpermissionsmgr.cpp

Go to the documentation of this file.
00001 
00032 #include "llviewerprecompiledheaders.h"
00033 
00034 #include "llfloaterpermissionsmgr.h"
00035 
00036 #include "llscrollcontainer.h"
00037 #include "lltextbox.h"
00038 #include "llbutton.h"
00039 #include "llagent.h"
00040 #include "llviewerobjectlist.h"
00041 #include "llviewerregion.h"
00042 #include "llstl.h"
00043 
00044 // constants
00045 const S32 MIN_PERM_MGR_WIDTH = 100;
00046 const S32 MIN_PERM_MGR_HEIGHT = 100;
00047 const S32 VPAD = 8;
00048 const S32 HPAD = 8;
00049 const S32 LINE = 16;
00050 
00051 // statics
00052 LLFloaterPermissionsMgr* LLFloaterPermissionsMgr::sInstance = NULL;
00053 
00054 LLFloaterPermissionsMgr* LLFloaterPermissionsMgr::show()
00055 {
00056         if (!sInstance)
00057         {
00058                 sInstance = new LLFloaterPermissionsMgr();
00059 
00060                 sInstance->open();      /* Flawfinder: ignore */
00061                 gFloaterView->adjustToFitScreen(sInstance, TRUE);
00062         }
00063         else
00064         {
00065                 sInstance->open();              /* Flawfinder: ignore */
00066         }
00067 
00068         return sInstance;
00069 }
00070 
00071 void LLFloaterPermissionsMgr::processPermissionsList(LLMessageSystem* msg, void**)
00072 {
00073 }
00074 
00075 LLFloaterPermissionsMgr::LLFloaterPermissionsMgr() : LLFloater("floater_perm_mgr", "PermissionsManagerRect", "Permissions Manager", TRUE, MIN_PERM_MGR_WIDTH,
00076                                                                                                                         MIN_PERM_MGR_HEIGHT)
00077 {
00078         S32 y = getRect().getHeight() - VPAD - LINE;
00079         LLRect scrollable_container_rect(0, y, getRect().getWidth(), 0);
00080         LLRect permissions_rect(0, 0, getRect().getWidth() - HPAD - HPAD, 0);
00081         mPermissions = new LLPermissionsView(permissions_rect);
00082         mScroller = new LLScrollableContainerView(
00083                                 "permissions container",
00084                                 scrollable_container_rect,
00085                                 mPermissions
00086                                 );
00087         mScroller->setFollowsAll();
00088         mScroller->setReserveScrollCorner(TRUE);
00089         addChild(mScroller);
00090 }
00091 
00092 LLFloaterPermissionsMgr::~LLFloaterPermissionsMgr()
00093 {
00094 }
00095 
00096 
00097 //
00098 // LLPermissionsView
00099 //
00100 
00101 LLPermissionsView::LLPermissionsView(const LLRect &rect) : LLView("permissions_view", rect, TRUE, FOLLOWS_NONE)
00102 {
00103 }
00104 
00105 void LLPermissionsView::clearPermissionsData() 
00106 {
00107         deleteAllChildren();
00108         std::for_each(mPermData.begin(), mPermData.end(), DeletePairedPointer());
00109         mPermData.clear();
00110 }
00111 
00112 void LLPermissionsView::addPermissionsData(const LLString& object_name, const LLUUID& object_id, U32 permissions_flags) 
00113 {
00114         // grow to make room for new element
00115         LLPermissionsData* perm_datap = new LLPermissionsData(object_id, permissions_flags);
00116 
00117         reshape(getRect().getWidth(), getRect().getHeight() + LINE + VPAD + BTN_HEIGHT + VPAD);
00118         S32 y = getRect().getHeight() - LINE - VPAD;
00119         LLRect label_rect(HPAD, y + LINE, getRect().getWidth(), y);
00120         LLTextBox* text = new LLTextBox("perm_label", label_rect, object_name.c_str());
00121         text->setFollows(FOLLOWS_LEFT | FOLLOWS_RIGHT | FOLLOWS_BOTTOM);
00122         addChild(text);
00123 
00124         y -= LINE + VPAD;
00125 
00126         LLRect btn_rect(HPAD, y + BTN_HEIGHT, 120, y);
00127         LLButton* button = new LLButton("Revoke permissions", btn_rect, "", revokePermissions, (void*)perm_datap);
00128         button->setFollows(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
00129         addChild(button);
00130 
00131         btn_rect.set(HPAD + 120 + HPAD, y + BTN_HEIGHT, HPAD + 120 + HPAD + 120, y);
00132         button = new LLButton("Find in world", btn_rect, "", findObject, (void*)perm_datap);
00133         button->setFollows(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
00134         addChild(button);
00135 
00136         mPermData.insert(std::make_pair(object_id, perm_datap));
00137 }
00138 
00139 void LLPermissionsView::revokePermissions(void *userdata)
00140 {
00141         LLPermissionsData* perm_data = (LLPermissionsData*)userdata;
00142         if (perm_data)
00143         {
00144                 LLViewerObject* objectp = gObjectList.findObject(perm_data->mObjectID);
00145                 if (objectp)
00146                 {
00147                         LLMessageSystem* msg = gMessageSystem;
00148                         msg->newMessageFast(_PREHASH_RevokePermissions);
00149                         msg->nextBlockFast(_PREHASH_AgentData);
00150                         msg->addUUIDFast(_PREHASH_AgentID, gAgent.getID());
00151                         msg->addUUIDFast(_PREHASH_SessionID, gAgent.getSessionID());
00152                         msg->nextBlockFast(_PREHASH_Data);
00153                         msg->addUUIDFast(_PREHASH_ObjectID, perm_data->mObjectID);
00154                         msg->addU32Fast(_PREHASH_ObjectPermissions, perm_data->mPermFlags);
00155                         msg->sendReliable(objectp->getRegion()->getHost());
00156                 }
00157         }
00158 }
00159 
00160 void LLPermissionsView::findObject(void *userdata)
00161 {
00162 }

Generated on Fri May 16 08:33:29 2008 for SecondLife by  doxygen 1.5.5