void LLPreviewGesture::initDefaultGesture() { LLScrollListItem* item; item = addStep("Animation"); LLGestureStepAnimation* anim = (LLGestureStepAnimation*)item->getUserdata(); anim->mAnimAssetID = ANIM_AGENT_HELLO; anim->mAnimName = "Wave"; updateLabel(item); item = addStep("Wait"); LLGestureStepWait* wait = (LLGestureStepWait*)item->getUserdata(); wait->mFlags = WAIT_FLAG_ALL_ANIM; updateLabel(item); item = addStep("Chat"); LLGestureStepChat* chat_step = (LLGestureStepChat*)item->getUserdata(); chat_step->mChatText = "Hello, avatar!"; updateLabel(item); // Start with item list selected mStepList->selectFirstItem(); // this is *new* content, so we are dirty mDirty = TRUE; }
void LLFloaterNewIM::onStart(void* userdata) { LLFloaterNewIM* self = (LLFloaterNewIM*) userdata; LLScrollListItem* item = self->mSelectionList->getFirstSelected(); if(item) { const LLScrollListCell* cell = item->getColumn(0); std::string name(cell->getValue()); // *NOTE: Do a live detrmination of what type of session it // should be. If we restrict the new im panel to online users, // then we can remove some of this code. EInstantMessage type; EInstantMessage* t = (EInstantMessage*)item->getUserdata(); if(t) type = (*t); else type = LLIMMgr::defaultIMTypeForAgent(item->getUUID()); gIMMgr->addSession(name, type, item->getUUID()); make_ui_sound("UISndStartIM"); } else { make_ui_sound("UISndInvalidOp"); } }
void* LLComboBox::getCurrentUserdata() { LLScrollListItem* item = mList->getFirstSelected(); if( item ) { return item->getUserdata(); } return NULL; }
LLControlVariable* LLFloaterSettingsDebug::getControlVariable() { LLScrollListItem* item = mSettingsScrollList->getFirstSelected(); if (!item) return NULL; LLControlVariable* controlp = static_cast<LLControlVariable*>(item->getUserdata()); return controlp ? controlp->getCOAActive() : NULL; }
LLPreviewGesture::~LLPreviewGesture() { // Userdata for all steps is a LLGestureStep we need to clean up std::vector<LLScrollListItem*> data_list = mStepList->getAllData(); std::vector<LLScrollListItem*>::iterator data_itor; for (data_itor = data_list.begin(); data_itor != data_list.end(); ++data_itor) { LLScrollListItem* item = *data_itor; LLGestureStep* step = (LLGestureStep*)item->getUserdata(); delete step; step = NULL; } }
void LLPreviewGesture::onClickDelete() { LLScrollListItem* item = mStepList->getFirstSelected(); S32 selected_index = mStepList->getFirstSelectedIndex(); if (item && selected_index >= 0) { LLGestureStep* step = (LLGestureStep*)item->getUserdata(); delete step; mStepList->deleteSingleItem(selected_index); mDirty = TRUE; refresh(); } }
/*static*/ void LLNotificationChannelPanel::onClickNotificationReject(void* user_data) { LLNotificationChannelPanel* self = (LLNotificationChannelPanel*)user_data; if (!self) return; LLScrollListItem* firstselected = self->getChild<LLScrollListCtrl>("notification_rejects_list")->getFirstSelected(); llassert(firstselected); if (firstselected) { void* data = firstselected->getUserdata(); if (data) { gFloaterView->getParentFloater(self)->addDependentFloater(new LLFloaterNotification((LLNotification*)data), TRUE); } } }
// static void LLPreviewGesture::onClickDelete(void* data) { LLPreviewGesture* self = (LLPreviewGesture*)data; LLScrollListItem* item = self->mStepList->getFirstSelected(); S32 selected_index = self->mStepList->getFirstSelectedIndex(); if (item && selected_index >= 0) { LLGestureStep* step = (LLGestureStep*)item->getUserdata(); delete step; step = NULL; self->mStepList->deleteSingleItem(selected_index); self->mDirty = TRUE; self->refresh(); } }
// virtual BOOL LLPreviewGesture::handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop, EDragAndDropType cargo_type, void* cargo_data, EAcceptance* accept, LLString& tooltip_msg) { BOOL handled = TRUE; switch(cargo_type) { case DAD_ANIMATION: case DAD_SOUND: { // TODO: Don't allow this if you can't transfer the sound/animation // make a script step LLInventoryItem* item = (LLInventoryItem*)cargo_data; if (item && gInventory.getItem(item->getUUID())) { LLPermissions perm = item->getPermissions(); if (!((perm.getMaskBase() & PERM_ITEM_UNRESTRICTED) == PERM_ITEM_UNRESTRICTED)) { *accept = ACCEPT_NO; if (tooltip_msg.empty()) { tooltip_msg.assign("Only animations and sounds\n" "with unrestricted permissions\n" "can be added to a gesture."); } break; } else if (drop) { LLScrollListItem* line = NULL; if (cargo_type == DAD_ANIMATION) { line = addStep("Animation"); LLGestureStepAnimation* anim = (LLGestureStepAnimation*)line->getUserdata(); anim->mAnimAssetID = item->getAssetUUID(); anim->mAnimName = item->getName(); } else if (cargo_type == DAD_SOUND) { line = addStep("Sound"); LLGestureStepSound* sound = (LLGestureStepSound*)line->getUserdata(); sound->mSoundAssetID = item->getAssetUUID(); sound->mSoundName = item->getName(); } updateLabel(line); mDirty = TRUE; refresh(); } *accept = ACCEPT_YES_COPY_MULTI; } else { // Not in user's inventory means it was in object inventory *accept = ACCEPT_NO; } break; } default: *accept = ACCEPT_NO; if (tooltip_msg.empty()) { tooltip_msg.assign("Only animations and sounds\n" "can be added to a gesture."); } break; } return handled; }
LLMultiGesture* LLPreviewGesture::createGesture() { LLMultiGesture* gesture = new LLMultiGesture(); gesture->mTrigger = mTriggerEditor->getText(); gesture->mReplaceText = mReplaceEditor->getText(); const std::string& modifier = mModifierCombo->getSimple(); if (modifier == CTRL_LABEL) { gesture->mMask = MASK_CONTROL; } else if (modifier == SHIFT_LABEL) { gesture->mMask = MASK_SHIFT; } else { gesture->mMask = MASK_NONE; } if (mKeyCombo->getCurrentIndex() == 0) { gesture->mKey = KEY_NONE; } else { const std::string& key_string = mKeyCombo->getSimple(); LLKeyboard::keyFromString(key_string, &(gesture->mKey)); } std::vector<LLScrollListItem*> data_list = mStepList->getAllData(); std::vector<LLScrollListItem*>::iterator data_itor; for (data_itor = data_list.begin(); data_itor != data_list.end(); ++data_itor) { LLScrollListItem* item = *data_itor; LLGestureStep* step = (LLGestureStep*)item->getUserdata(); switch(step->getType()) { case STEP_ANIMATION: { // Copy UI-generated step into actual gesture step LLGestureStepAnimation* anim_step = (LLGestureStepAnimation*)step; LLGestureStepAnimation* new_anim_step = new LLGestureStepAnimation(*anim_step); gesture->mSteps.push_back(new_anim_step); break; } case STEP_SOUND: { // Copy UI-generated step into actual gesture step LLGestureStepSound* sound_step = (LLGestureStepSound*)step; LLGestureStepSound* new_sound_step = new LLGestureStepSound(*sound_step); gesture->mSteps.push_back(new_sound_step); break; } case STEP_CHAT: { // Copy UI-generated step into actual gesture step LLGestureStepChat* chat_step = (LLGestureStepChat*)step; LLGestureStepChat* new_chat_step = new LLGestureStepChat(*chat_step); gesture->mSteps.push_back(new_chat_step); break; } case STEP_WAIT: { // Copy UI-generated step into actual gesture step LLGestureStepWait* wait_step = (LLGestureStepWait*)step; LLGestureStepWait* new_wait_step = new LLGestureStepWait(*wait_step); gesture->mSteps.push_back(new_wait_step); break; } default: { break; } } } return gesture; }