summaryrefslogtreecommitdiff
path: root/indra/newview/llfloatergesture.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloatergesture.cpp')
-rw-r--r--indra/newview/llfloatergesture.cpp228
1 files changed, 78 insertions, 150 deletions
diff --git a/indra/newview/llfloatergesture.cpp b/indra/newview/llfloatergesture.cpp
index 6d39d75663..431bc09d86 100644
--- a/indra/newview/llfloatergesture.cpp
+++ b/indra/newview/llfloatergesture.cpp
@@ -44,7 +44,7 @@
#include "llcombobox.h"
#include "llgesturemgr.h"
#include "llinventorymodel.h"
-#include "llinventoryview.h"
+#include "llfloaterinventory.h"
#include "llkeyboard.h"
#include "lllineeditor.h"
#include "llpreviewgesture.h"
@@ -53,17 +53,14 @@
#include "llscrollcontainer.h"
#include "llscrolllistctrl.h"
#include "lltextbox.h"
+#include "lltrans.h"
#include "lluictrlfactory.h"
#include "llviewergesture.h"
-#include "llviewerimagelist.h"
+#include "llviewertexturelist.h"
#include "llviewerinventory.h"
#include "llvoavatar.h"
#include "llviewercontrol.h"
-// static
-LLFloaterGesture* LLFloaterGesture::sInstance = NULL;
-LLFloaterGestureObserver* LLFloaterGesture::sObserver = NULL;
-
BOOL item_name_precedes( LLInventoryItem* a, LLInventoryItem* b )
{
return LLStringUtil::precedesDict( a->getName(), b->getName() );
@@ -72,35 +69,31 @@ BOOL item_name_precedes( LLInventoryItem* a, LLInventoryItem* b )
class LLFloaterGestureObserver : public LLGestureManagerObserver
{
public:
- LLFloaterGestureObserver() {}
+ LLFloaterGestureObserver(LLFloaterGesture* floater) : mFloater(floater) {}
virtual ~LLFloaterGestureObserver() {}
- virtual void changed() { LLFloaterGesture::refreshAll(); }
+ virtual void changed() { mFloater->refreshAll(); }
+
+private:
+ LLFloaterGesture* mFloater;
};
//---------------------------------------------------------------------------
// LLFloaterGesture
//---------------------------------------------------------------------------
-LLFloaterGesture::LLFloaterGesture()
-: LLFloater(std::string("Gesture Floater"))
+LLFloaterGesture::LLFloaterGesture(const LLSD& key)
+ : LLFloater(key)
{
- sInstance = this;
-
- sObserver = new LLFloaterGestureObserver;
- gGestureManager.addObserver(sObserver);
+ mObserver = new LLFloaterGestureObserver(this);
+ LLGestureManager::instance().addObserver(mObserver);
+ //LLUICtrlFactory::getInstance()->buildFloater(this, "floater_gesture.xml");
}
// virtual
LLFloaterGesture::~LLFloaterGesture()
{
- gGestureManager.removeObserver(sObserver);
- delete sObserver;
- sObserver = NULL;
-
- sInstance = NULL;
-
- // Custom saving rectangle, since load must be done
- // after postBuild.
- gSavedSettings.setRect("FloaterGestureRect2", getRect());
+ LLGestureManager::instance().removeObserver(mObserver);
+ delete mObserver;
+ mObserver = NULL;
}
// virtual
@@ -108,55 +101,31 @@ BOOL LLFloaterGesture::postBuild()
{
std::string label;
- // Translate title
label = getTitle();
setTitle(label);
- childSetCommitCallback("gesture_list", onCommitList, this);
- childSetDoubleClickCallback("gesture_list", onClickPlay);
+ getChild<LLUICtrl>("gesture_list")->setCommitCallback(boost::bind(&LLFloaterGesture::onCommitList, this));
+ getChild<LLScrollListCtrl>("gesture_list")->setDoubleClickCallback(boost::bind(&LLFloaterGesture::onClickPlay, this));
- childSetAction("inventory_btn", onClickInventory, this);
+ getChild<LLUICtrl>("inventory_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickInventory, this));
- childSetAction("edit_btn", onClickEdit, this);
+ getChild<LLUICtrl>("edit_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickEdit, this));
- childSetAction("play_btn", onClickPlay, this);
- childSetAction("stop_btn", onClickPlay, this);
+ getChild<LLUICtrl>("play_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickPlay, this));
+ getChild<LLUICtrl>("stop_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickPlay, this));
- childSetAction("new_gesture_btn", onClickNew, this);
+ getChild<LLUICtrl>("new_gesture_btn")->setCommitCallback(boost::bind(&LLFloaterGesture::onClickNew, this));
childSetVisible("play_btn", true);
childSetVisible("stop_btn", false);
setDefaultBtn("play_btn");
+
+ buildGestureList();
+
+ childSetFocus("gesture_list");
- return TRUE;
-}
-
-
-// static
-void LLFloaterGesture::show()
-{
- if (sInstance)
- {
- sInstance->open(); /*Flawfinder: ignore*/
- return;
- }
-
- LLFloaterGesture *self = new LLFloaterGesture();
-
- // Builds and adds to gFloaterView
- LLUICtrlFactory::getInstance()->buildFloater(self, "floater_gesture.xml");
-
- // Fix up rectangle
- LLRect rect = gSavedSettings.getRect("FloaterGestureRect2");
- self->reshape(rect.getWidth(), rect.getHeight());
- self->setRect(rect);
-
- self->buildGestureList();
-
- self->childSetFocus("gesture_list");
-
- LLCtrlListInterface *list = self->childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = childGetListInterface("gesture_list");
if (list)
{
const BOOL ascending = TRUE;
@@ -164,51 +133,34 @@ void LLFloaterGesture::show()
list->selectFirstItem();
}
- self->mSelectedID = LLUUID::null;
-
// Update button labels
- onCommitList(NULL, self);
- self->open(); /*Flawfinder: ignore*/
+ onCommitList();
+
+ return TRUE;
}
-// static
-void LLFloaterGesture::toggleVisibility()
-{
- if(sInstance && sInstance->getVisible())
- {
- sInstance->close();
- }
- else
- {
- show();
- }
-}
-// static
void LLFloaterGesture::refreshAll()
{
- if (sInstance)
- {
- sInstance->buildGestureList();
+ buildGestureList();
- LLCtrlListInterface *list = sInstance->childGetListInterface("gesture_list");
- if (!list) return;
+ LLCtrlListInterface *list = childGetListInterface("gesture_list");
+ if (!list) return;
- if (sInstance->mSelectedID.isNull())
+ if (mSelectedID.isNull())
+ {
+ list->selectFirstItem();
+ }
+ else
+ {
+ if (! list->setCurrentByID(mSelectedID))
{
list->selectFirstItem();
}
- else
- {
- if (! list->setCurrentByID(sInstance->mSelectedID))
- {
- list->selectFirstItem();
- }
- }
-
- // Update button labels
- onCommitList(NULL, sInstance);
}
+
+ // Update button labels
+ onCommitList();
}
void LLFloaterGesture::buildGestureList()
@@ -225,13 +177,13 @@ void LLFloaterGesture::buildGestureList()
list->operateOnAll(LLCtrlListInterface::OP_DELETE);
LLGestureManager::item_map_t::iterator it;
- for (it = gGestureManager.mActive.begin(); it != gGestureManager.mActive.end(); ++it)
+ for (it = LLGestureManager::instance().mActive.begin(); it != LLGestureManager::instance().mActive.end(); ++it)
{
const LLUUID& item_id = (*it).first;
LLMultiGesture* gesture = (*it).second;
// Note: Can have NULL item if inventory hasn't arrived yet.
- std::string item_name = "Loading...";
+ std::string item_name = getString("loading");
LLInventoryItem* item = gInventory.getItem(item_id);
if (item)
{
@@ -254,7 +206,7 @@ void LLFloaterGesture::buildGestureList()
element["columns"][0]["column"] = "trigger";
element["columns"][0]["value"] = gesture->mTrigger;
element["columns"][0]["font"] = "SANSSERIF";
- element["columns"][0]["font-style"] = font_style;
+ element["columns"][0]["font"]["style"] = font_style;
std::string key_string = LLKeyboard::stringFromKey(gesture->mKey);
std::string buffer;
@@ -281,42 +233,42 @@ void LLFloaterGesture::buildGestureList()
element["columns"][1]["column"] = "shortcut";
element["columns"][1]["value"] = buffer;
element["columns"][1]["font"] = "SANSSERIF";
- element["columns"][1]["font-style"] = font_style;
+ element["columns"][1]["font"]["style"] = font_style;
// hidden column for sorting
element["columns"][2]["column"] = "key";
element["columns"][2]["value"] = key_string;
element["columns"][2]["font"] = "SANSSERIF";
- element["columns"][2]["font-style"] = font_style;
+ element["columns"][2]["font"]["style"] = font_style;
// Only add "playing" if we've got the name, less confusing. JC
if (item && gesture->mPlaying)
{
- item_name += " (Playing)";
+ item_name += " " + getString("playing");
}
element["columns"][3]["column"] = "name";
element["columns"][3]["value"] = item_name;
element["columns"][3]["font"] = "SANSSERIF";
- element["columns"][3]["font-style"] = font_style;
+ element["columns"][3]["font"]["style"] = font_style;
}
else
{
element["columns"][0]["column"] = "trigger";
element["columns"][0]["value"] = "";
element["columns"][0]["font"] = "SANSSERIF";
- element["columns"][0]["font-style"] = font_style;
+ element["columns"][0]["font"]["style"] = font_style;
element["columns"][0]["column"] = "trigger";
element["columns"][0]["value"] = "---";
element["columns"][0]["font"] = "SANSSERIF";
- element["columns"][0]["font-style"] = font_style;
+ element["columns"][0]["font"]["style"] = font_style;
element["columns"][2]["column"] = "key";
element["columns"][2]["value"] = "~~~";
element["columns"][2]["font"] = "SANSSERIF";
- element["columns"][2]["font-style"] = font_style;
+ element["columns"][2]["font"]["style"] = font_style;
element["columns"][3]["column"] = "name";
element["columns"][3]["value"] = item_name;
element["columns"][3]["font"] = "SANSSERIF";
- element["columns"][3]["font-style"] = font_style;
+ element["columns"][3]["font"]["style"] = font_style;
}
list->addElement(element, ADD_BOTTOM);
}
@@ -324,104 +276,80 @@ void LLFloaterGesture::buildGestureList()
scroll->setScrollPos(current_scroll_pos);
}
-// static
-void LLFloaterGesture::onClickInventory(void* data)
+void LLFloaterGesture::onClickInventory()
{
- LLFloaterGesture* self = (LLFloaterGesture*)data;
-
- LLCtrlListInterface *list = self->childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = childGetListInterface("gesture_list");
if (!list) return;
const LLUUID& item_id = list->getCurrentID();
- LLInventoryView* inv = LLInventoryView::showAgentInventory();
+ LLFloaterInventory* inv = LLFloaterInventory::showAgentInventory();
if (!inv) return;
inv->getPanel()->setSelection(item_id, TRUE);
}
-// static
-void LLFloaterGesture::onClickPlay(void* data)
+void LLFloaterGesture::onClickPlay()
{
- LLFloaterGesture* self = (LLFloaterGesture*)data;
-
- LLCtrlListInterface *list = self->childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = childGetListInterface("gesture_list");
if (!list) return;
const LLUUID& item_id = list->getCurrentID();
- if (gGestureManager.isGesturePlaying(item_id))
+ if (LLGestureManager::instance().isGesturePlaying(item_id))
{
- gGestureManager.stopGesture(item_id);
+ LLGestureManager::instance().stopGesture(item_id);
}
else
{
- gGestureManager.playGesture(item_id);
+ LLGestureManager::instance().playGesture(item_id);
}
}
class GestureShowCallback : public LLInventoryCallback
{
public:
- GestureShowCallback(std::string &title)
- {
- mTitle = title;
- }
void fire(const LLUUID &inv_item)
{
- LLPreviewGesture::show(mTitle, inv_item, LLUUID::null);
+ LLPreviewGesture::show(inv_item, LLUUID::null);
}
-private:
- std::string mTitle;
};
-// static
-void LLFloaterGesture::onClickNew(void* data)
+void LLFloaterGesture::onClickNew()
{
- std::string title("Gesture: ");
- title.append("New Gesture");
- LLPointer<LLInventoryCallback> cb = new GestureShowCallback(title);
+ LLPointer<LLInventoryCallback> cb = new GestureShowCallback();
create_inventory_item(gAgent.getID(), gAgent.getSessionID(),
LLUUID::null, LLTransactionID::tnull, "New Gesture", "", LLAssetType::AT_GESTURE,
LLInventoryType::IT_GESTURE, NOT_WEARABLE, PERM_MOVE | PERM_TRANSFER, cb);
}
-// static
-void LLFloaterGesture::onClickEdit(void* data)
+void LLFloaterGesture::onClickEdit()
{
- LLFloaterGesture* self = (LLFloaterGesture*)data;
-
- LLCtrlListInterface *list = self->childGetListInterface("gesture_list");
+ LLCtrlListInterface *list = childGetListInterface("gesture_list");
if (!list) return;
const LLUUID& item_id = list->getCurrentID();
LLInventoryItem* item = gInventory.getItem(item_id);
if (!item) return;
- std::string title("Gesture: ");
- title.append(item->getName());
-
- LLPreviewGesture* previewp = LLPreviewGesture::show(title, item_id, LLUUID::null);
+ LLPreviewGesture* previewp = LLPreviewGesture::show(item_id, LLUUID::null);
if (!previewp->getHost())
{
- previewp->setRect(gFloaterView->findNeighboringPosition(self, previewp));
+ previewp->setRect(gFloaterView->findNeighboringPosition(this, previewp));
}
}
-// static
-void LLFloaterGesture::onCommitList(LLUICtrl* ctrl, void* data)
+void LLFloaterGesture::onCommitList()
{
- LLFloaterGesture* self = (LLFloaterGesture*)data;
-
- const LLUUID& item_id = self->childGetValue("gesture_list").asUUID();
+ const LLUUID& item_id = childGetValue("gesture_list").asUUID();
- self->mSelectedID = item_id;
- if (gGestureManager.isGesturePlaying(item_id))
+ mSelectedID = item_id;
+ if (LLGestureManager::instance().isGesturePlaying(item_id))
{
- self->childSetVisible("play_btn", false);
- self->childSetVisible("stop_btn", true);
+ childSetVisible("play_btn", false);
+ childSetVisible("stop_btn", true);
}
else
{
- self->childSetVisible("play_btn", true);
- self->childSetVisible("stop_btn", false);
+ childSetVisible("play_btn", true);
+ childSetVisible("stop_btn", false);
}
}