summaryrefslogtreecommitdiff
path: root/indra/newview/llfloatertopobjects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloatertopobjects.cpp')
-rw-r--r--indra/newview/llfloatertopobjects.cpp145
1 files changed, 69 insertions, 76 deletions
diff --git a/indra/newview/llfloatertopobjects.cpp b/indra/newview/llfloatertopobjects.cpp
index 29ac0c66f8..bf5a1141a6 100644
--- a/indra/newview/llfloatertopobjects.cpp
+++ b/indra/newview/llfloatertopobjects.cpp
@@ -40,6 +40,7 @@
#include "llagent.h"
#include "llbutton.h"
#include "llfloatergodtools.h"
+#include "llfloaterreg.h"
#include "llparcel.h"
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
@@ -53,11 +54,11 @@
#include "lluictrlfactory.h"
#include "llviewerwindow.h"
-LLFloaterTopObjects* LLFloaterTopObjects::sInstance = NULL;
+//LLFloaterTopObjects* LLFloaterTopObjects::sInstance = NULL;
// Globals
// const U32 TIME_STR_LENGTH = 30;
-
+/*
// static
void LLFloaterTopObjects::show()
{
@@ -68,21 +69,28 @@ void LLFloaterTopObjects::show()
}
sInstance = new LLFloaterTopObjects();
- LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_top_objects.xml");
+// LLUICtrlFactory::getInstance()->buildFloater(sInstance, "floater_top_objects.xml");
sInstance->center();
}
-
-LLFloaterTopObjects::LLFloaterTopObjects()
-: LLFloater(),
+*/
+LLFloaterTopObjects::LLFloaterTopObjects(const LLSD& key)
+: LLFloater(key),
mInitialized(FALSE),
mtotalScore(0.f)
{
- sInstance = this;
+ mCommitCallbackRegistrar.add("TopObjects.ShowBeacon", boost::bind(&LLFloaterTopObjects::onClickShowBeacon, this));
+ mCommitCallbackRegistrar.add("TopObjects.ReturnSelected", boost::bind(&LLFloaterTopObjects::onReturnSelected, this));
+ mCommitCallbackRegistrar.add("TopObjects.ReturnAll", boost::bind(&LLFloaterTopObjects::onReturnAll, this));
+ mCommitCallbackRegistrar.add("TopObjects.DisableSelected", boost::bind(&LLFloaterTopObjects::onDisableSelected, this));
+ mCommitCallbackRegistrar.add("TopObjects.DisableAll", boost::bind(&LLFloaterTopObjects::onDisableAll, this));
+ mCommitCallbackRegistrar.add("TopObjects.Refresh", boost::bind(&LLFloaterTopObjects::onRefresh, this));
+ mCommitCallbackRegistrar.add("TopObjects.GetByObjectName", boost::bind(&LLFloaterTopObjects::onGetByObjectName, this));
+ mCommitCallbackRegistrar.add("TopObjects.GetByOwnerName", boost::bind(&LLFloaterTopObjects::onGetByOwnerName, this));
+ mCommitCallbackRegistrar.add("TopObjects.CommitObjectsList",boost::bind(&LLFloaterTopObjects::onCommitObjectsList, this));
}
LLFloaterTopObjects::~LLFloaterTopObjects()
{
- sInstance = NULL;
}
// virtual
@@ -90,24 +98,11 @@ BOOL LLFloaterTopObjects::postBuild()
{
LLScrollListCtrl *objects_list = getChild<LLScrollListCtrl>("objects_list");
childSetFocus("objects_list");
- childSetCommitCallback("objects_list", onCommitObjectsList, this);
objects_list->setDoubleClickCallback(onDoubleClickObjectsList, this);
objects_list->setCommitOnSelectionChange(TRUE);
- childSetAction("show_beacon_btn", onClickShowBeacon, this);
setDefaultBtn("show_beacon_btn");
- childSetAction("return_selected_btn", onReturnSelected, this);
- childSetAction("return_all_btn", onReturnAll, this);
- childSetAction("disable_selected_btn", onDisableSelected, this);
- childSetAction("disable_all_btn", onDisableAll, this);
- childSetAction("refresh_btn", onRefresh, this);
-
-
- childSetAction("filter_object_btn", onGetByObjectNameClicked, this);
- childSetAction("filter_owner_btn", onGetByOwnerNameClicked, this);
-
-
/*
LLLineEditor* line_editor = getChild<LLLineEditor>("owner_name_editor");
if (line_editor)
@@ -129,19 +124,29 @@ BOOL LLFloaterTopObjects::postBuild()
return TRUE;
}
+// static
+void LLFloaterTopObjects::setMode(U32 mode)
+{
+ LLFloaterTopObjects* instance = LLFloaterReg::getTypedInstance<LLFloaterTopObjects>("top_objects");
+ if(!instance) return;
+ instance->mCurrentMode = mode;
+}
+// static
void LLFloaterTopObjects::handle_land_reply(LLMessageSystem* msg, void** data)
{
+ LLFloaterTopObjects* instance = LLFloaterReg::getTypedInstance<LLFloaterTopObjects>("top_objects");
+ if(!instance) return;
// Make sure dialog is on screen
- show();
- sInstance->handleReply(msg, data);
+ LLFloaterReg::showInstance("top_objects");
+ instance->handleReply(msg, data);
//HACK: for some reason sometimes top scripts originally comes back
//with no results even though they're there
- if (!sInstance->mObjectListIDs.size() && !sInstance->mInitialized)
+ if (!instance->mObjectListIDs.size() && !instance->mInitialized)
{
- sInstance->onRefresh(NULL);
- sInstance->mInitialized = TRUE;
+ instance->onRefresh();
+ instance->mInitialized = TRUE;
}
}
@@ -260,12 +265,9 @@ void LLFloaterTopObjects::handleReply(LLMessageSystem *msg, void** data)
}
}
-// static
-void LLFloaterTopObjects::onCommitObjectsList(LLUICtrl* ctrl, void* data)
+void LLFloaterTopObjects::onCommitObjectsList()
{
- LLFloaterTopObjects* self = (LLFloaterTopObjects*)data;
-
- self->updateSelectionInfo();
+ updateSelectionInfo();
}
void LLFloaterTopObjects::updateSelectionInfo()
@@ -292,11 +294,9 @@ void LLFloaterTopObjects::onDoubleClickObjectsList(void* data)
}
// static
-void LLFloaterTopObjects::onClickShowBeacon(void* data)
+void LLFloaterTopObjects::onClickShowBeacon()
{
- LLFloaterTopObjects* self = (LLFloaterTopObjects*)data;
- if (!self) return;
- self->showBeacon();
+ showBeacon();
}
void LLFloaterTopObjects::doToObjects(int action, bool all)
@@ -360,22 +360,24 @@ void LLFloaterTopObjects::doToObjects(int action, bool all)
bool LLFloaterTopObjects::callbackReturnAll(const LLSD& notification, const LLSD& response)
{
S32 option = LLNotification::getSelectedOption(notification, response);
+ LLFloaterTopObjects* instance = LLFloaterReg::getTypedInstance<LLFloaterTopObjects>("top_objects");
+ if(!instance) return false;
if (option == 0)
{
- sInstance->doToObjects(ACTION_RETURN, true);
+ instance->doToObjects(ACTION_RETURN, true);
}
return false;
}
-void LLFloaterTopObjects::onReturnAll(void* data)
+void LLFloaterTopObjects::onReturnAll()
{
LLNotifications::instance().add("ReturnAllTopObjects", LLSD(), LLSD(), &callbackReturnAll);
}
-void LLFloaterTopObjects::onReturnSelected(void* data)
+void LLFloaterTopObjects::onReturnSelected()
{
- sInstance->doToObjects(ACTION_RETURN, false);
+ doToObjects(ACTION_RETURN, false);
}
@@ -383,52 +385,52 @@ void LLFloaterTopObjects::onReturnSelected(void* data)
bool LLFloaterTopObjects::callbackDisableAll(const LLSD& notification, const LLSD& response)
{
S32 option = LLNotification::getSelectedOption(notification, response);
+ LLFloaterTopObjects* instance = LLFloaterReg::getTypedInstance<LLFloaterTopObjects>("top_objects");
+ if(!instance) return false;
if (option == 0)
{
- sInstance->doToObjects(ACTION_DISABLE, true);
+ instance->doToObjects(ACTION_DISABLE, true);
}
return false;
}
-void LLFloaterTopObjects::onDisableAll(void* data)
+void LLFloaterTopObjects::onDisableAll()
{
LLNotifications::instance().add("DisableAllTopObjects", LLSD(), LLSD(), callbackDisableAll);
}
-void LLFloaterTopObjects::onDisableSelected(void* data)
+void LLFloaterTopObjects::onDisableSelected()
{
- sInstance->doToObjects(ACTION_DISABLE, false);
+ doToObjects(ACTION_DISABLE, false);
}
-//static
+
void LLFloaterTopObjects::clearList()
{
- LLCtrlListInterface *list = sInstance->childGetListInterface("objects_list");
+ LLCtrlListInterface *list = childGetListInterface("objects_list");
if (list)
{
list->operateOnAll(LLCtrlListInterface::OP_DELETE);
}
- sInstance->mObjectListData.clear();
- sInstance->mObjectListIDs.clear();
- sInstance->mtotalScore = 0.f;
+ mObjectListData.clear();
+ mObjectListIDs.clear();
+ mtotalScore = 0.f;
}
-//static
-void LLFloaterTopObjects::onRefresh(void* data)
+
+void LLFloaterTopObjects::onRefresh()
{
U32 mode = STAT_REPORT_TOP_SCRIPTS;
U32 flags = 0;
std::string filter = "";
- if (sInstance)
- {
- mode = sInstance->mCurrentMode;
- flags = sInstance->mFlags;
- filter = sInstance->mFilter;
- sInstance->clearList();
- }
+ mode = mCurrentMode;
+ flags = mFlags;
+ filter = mFilter;
+ clearList();
+
LLMessageSystem *msg = gMessageSystem;
msg->newMessageFast(_PREHASH_LandStatRequest);
@@ -443,31 +445,22 @@ void LLFloaterTopObjects::onRefresh(void* data)
msg->sendReliable(gAgent.getRegionHost());
- if (sInstance)
- {
- sInstance->mFilter.clear();
- sInstance->mFlags = 0;
- }
+ mFilter.clear();
+ mFlags = 0;
}
-void LLFloaterTopObjects::onGetByObjectName(LLUICtrl* ctrl, void* data)
+void LLFloaterTopObjects::onGetByObjectName()
{
- if (sInstance)
- {
- sInstance->mFlags = STAT_FILTER_BY_OBJECT;
- sInstance->mFilter = sInstance->childGetText("object_name_editor");
- onRefresh(NULL);
- }
+ mFlags = STAT_FILTER_BY_OBJECT;
+ mFilter = childGetText("object_name_editor");
+ onRefresh();
}
-void LLFloaterTopObjects::onGetByOwnerName(LLUICtrl* ctrl, void* data)
+void LLFloaterTopObjects::onGetByOwnerName()
{
- if (sInstance)
- {
- sInstance->mFlags = STAT_FILTER_BY_OWNER;
- sInstance->mFilter = sInstance->childGetText("owner_name_editor");
- onRefresh(NULL);
- }
+ mFlags = STAT_FILTER_BY_OWNER;
+ mFilter = childGetText("owner_name_editor");
+ onRefresh();
}
void LLFloaterTopObjects::showBeacon()