// static void LLFloaterExploreSounds::handle_play_in_world(void* user_data) { LLFloaterExploreSounds* floater = (LLFloaterExploreSounds*)user_data; LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("sound_list"); std::vector<LLScrollListItem*> selection = list->getAllSelected(); std::vector<LLScrollListItem*>::iterator selection_iter = selection.begin(); std::vector<LLScrollListItem*>::iterator selection_end = selection.end(); for( ; selection_iter != selection_end; ++selection_iter) { LLSoundHistoryItem item = floater->getItem((*selection_iter)->getValue()); if(item.mID.isNull()) continue; LLMessageSystem* msg = gMessageSystem; msg->newMessageFast(_PREHASH_SoundTrigger); msg->nextBlockFast(_PREHASH_SoundData); msg->addUUIDFast(_PREHASH_SoundID, item.mAssetID); // Client untrusted, ids set on sim msg->addUUIDFast(_PREHASH_OwnerID, LLUUID::null ); msg->addUUIDFast(_PREHASH_ObjectID, LLUUID::null ); msg->addUUIDFast(_PREHASH_ParentID, LLUUID::null ); msg->addU64Fast(_PREHASH_Handle, gAgent.getRegion()->getHandle()); LLVector3 position = gAgent.getPositionAgent(); msg->addVector3Fast(_PREHASH_Position, position); msg->addF32Fast(_PREHASH_Gain, 1.0f); gAgent.sendMessage(); } }
// static void LLFloaterExploreSounds::handle_stop(void* user_data) { LLFloaterExploreSounds* floater = (LLFloaterExploreSounds*)user_data; LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("sound_list"); std::vector<LLScrollListItem*> selection = list->getAllSelected(); std::vector<LLScrollListItem*>::iterator selection_iter = selection.begin(); std::vector<LLScrollListItem*>::iterator selection_end = selection.end(); std::vector<LLUUID> asset_list; for( ; selection_iter != selection_end; ++selection_iter) { LLSoundHistoryItem item = floater->getItem((*selection_iter)->getValue()); if(item.mID.isNull()) continue; if(item.mPlaying) { if(item.mAudioSource) { S32 type = item.mType; item.mAudioSource->setType(LLAudioEngine::AUDIO_TYPE_UI); if(item.mAudioSource) item.mAudioSource->play(LLUUID::null); if(item.mAudioSource) item.mAudioSource->setType(type); } } } }
void LLFloaterExploreSounds::blacklistSound(void* user_data) { LLFloaterBlacklist::show(); LLFloaterExploreSounds* floater = (LLFloaterExploreSounds*)user_data; LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("sound_list"); typedef std::vector<LLScrollListItem*> item_map_t; item_map_t selection = list->getAllSelected(); item_map_t::iterator selection_end = selection.end(); for(item_map_t::iterator selection_iter = selection.begin(); selection_iter != selection_end; ++selection_iter) { LLSoundHistoryItem item = floater->getItem((*selection_iter)->getValue()); if(item.mID.isNull()) continue; LLSD sound_data; std::string agent; gCacheName->getFullName(item.mOwnerID, agent); LLViewerRegion* cur_region = gAgent.getRegion(); if(cur_region) sound_data["entry_name"] = llformat("Sound played by %s in region %s",agent.c_str(),cur_region->getName().c_str()); else sound_data["entry_name"] = llformat("Sound played by %s",agent.c_str()); sound_data["entry_type"] = (LLAssetType::EType)item.mType; sound_data["entry_agent"] = gAgent.getID(); LLFloaterBlacklist::addEntry(item.mAssetID,sound_data); } }
void lggAutoCorrectFloater::updateItemsList() { entryList->deleteAllItems(); if((namesList->getAllSelected().size())<=0) { updateListControlsEnabled(FALSE); return; } updateListControlsEnabled(TRUE); std::string listName= namesList->getFirstSelected()->getColumn(0)->getValue().asString(); LLSD listData = LGGAutoCorrect::getInstance()->getAutoCorrectEntries(listName); childSetValue("em_ac_list_enabled",listData["enabled"].asBoolean()); childSetValue("em_ac_list_style",listData["wordStyle"].asBoolean()); childSetValue("em_ac_list_show",listData["announce"].asBoolean()); childSetValue("em_ac_text_name",listName); childSetValue("em_ac_text_author",listData["author"]); childSetValue("em_ac_priority",listData["priority"]); static S32 *countAuto= rebind_llcontrol<S32>("EmeraldAutoCorrectCount", &gSavedSettings, true); childSetValue("em_ac_stats",*countAuto); LLSD autoCorrects = listData["data"]; LLSD::map_const_iterator loc_it = autoCorrects.beginMap(); LLSD::map_const_iterator loc_end = autoCorrects.endMap(); for ( ; loc_it != loc_end; ++loc_it) { const std::string& wrong = (*loc_it).first; const std::string& right = (*loc_it).second; //std::string lentry(wrong+"=>"+right); LLSD element; element["id"] = wrong; LLSD& s_column = element["columns"][0]; s_column["column"] = "Search"; s_column["value"] = wrong; s_column["font"] = "SANSSERIF"; LLSD& r_column = element["columns"][1]; r_column["column"] = "Replace"; r_column["value"] = right; r_column["font"] = "SANSSERIF"; entryList->addElement(element, ADD_BOTTOM); } }
// static void LLFloaterExploreSounds::handle_play_locally(void* user_data) { LLFloaterExploreSounds* floater = (LLFloaterExploreSounds*)user_data; LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("sound_list"); std::vector<LLScrollListItem*> selection = list->getAllSelected(); std::vector<LLScrollListItem*>::iterator selection_iter = selection.begin(); std::vector<LLScrollListItem*>::iterator selection_end = selection.end(); std::vector<LLUUID> asset_list; for( ; selection_iter != selection_end; ++selection_iter) { LLSoundHistoryItem item = floater->getItem((*selection_iter)->getValue()); if(item.mID.isNull()) continue; // Unique assets only if(std::find(asset_list.begin(), asset_list.end(), item.mAssetID) == asset_list.end()) { asset_list.push_back(item.mAssetID); gAudiop->triggerSound(item.mAssetID, LLUUID::null, 1.0f, LLAudioEngine::AUDIO_TYPE_UI); } } }
// static void LLFloaterExploreSounds::handle_open(void* user_data) { LLFloaterExploreSounds* floater = (LLFloaterExploreSounds*)user_data; LLScrollListCtrl* list = floater->getChild<LLScrollListCtrl>("sound_list"); std::vector<LLScrollListItem*> selection = list->getAllSelected(); std::vector<LLScrollListItem*>::iterator selection_iter = selection.begin(); std::vector<LLScrollListItem*>::iterator selection_end = selection.end(); std::vector<LLUUID> asset_list; for( ; selection_iter != selection_end; ++selection_iter) { LLSoundHistoryItem item = floater->getItem((*selection_iter)->getValue()); if(item.mID.isNull()) continue; // Unique assets only if(std::find(asset_list.begin(), asset_list.end(), item.mAssetID) == asset_list.end()) { asset_list.push_back(item.mAssetID); LLUUID inv_item = LLLocalInventory::addItem(item.mAssetID.asString(), LLAssetType::AT_SOUND, item.mAssetID, true); } } }
// static BOOL LLFloaterExploreSounds::tick() { //if(childGetValue("pause_chk").asBoolean()) return FALSE; bool show_collision_sounds = childGetValue("collision_chk").asBoolean(); bool show_repeated_assets = childGetValue("repeated_asset_chk").asBoolean(); bool show_avatars = childGetValue("avatars_chk").asBoolean(); bool show_objects = childGetValue("objects_chk").asBoolean(); std::list<LLSoundHistoryItem> history; if(childGetValue("pause_chk").asBoolean()) { history = mLastHistory; } else { std::map<LLUUID, LLSoundHistoryItem>::iterator map_iter = gSoundHistory.begin(); std::map<LLUUID, LLSoundHistoryItem>::iterator map_end = gSoundHistory.end(); for( ; map_iter != map_end; ++map_iter) { history.push_back((*map_iter).second); } LLSoundHistoryItemCompare c; history.sort(c); mLastHistory = history; } LLScrollListCtrl* list = getChild<LLScrollListCtrl>("sound_list"); // Save scroll pos and selection so they can be restored S32 scroll_pos = list->getScrollPos(); LLDynamicArray<LLUUID> selected_ids; std::vector<LLScrollListItem*> selected_items = list->getAllSelected(); std::vector<LLScrollListItem*>::iterator selection_iter = selected_items.begin(); std::vector<LLScrollListItem*>::iterator selection_end = selected_items.end(); for(; selection_iter != selection_end; ++selection_iter) selected_ids.push_back((*selection_iter)->getUUID()); list->clearRows(); std::list<LLUUID> unique_asset_list; std::list<LLSoundHistoryItem>::iterator iter = history.begin(); std::list<LLSoundHistoryItem>::iterator end = history.end(); for( ; iter != end; ++iter) { LLSoundHistoryItem item = (*iter); bool is_avatar = item.mOwnerID == item.mSourceID; if(is_avatar && !show_avatars) continue; bool is_object = !is_avatar; if(is_object && !show_objects) continue; bool is_repeated_asset = std::find(unique_asset_list.begin(), unique_asset_list.end(), item.mAssetID) != unique_asset_list.end(); if(is_repeated_asset && !show_repeated_assets) continue; if(!item.mReviewed) { item.mReviewedCollision = std::find(&collision_sounds[0], &collision_sounds[num_collision_sounds], item.mAssetID) != &collision_sounds[num_collision_sounds]; item.mReviewed = true; } bool is_collision_sound = item.mReviewedCollision; if(is_collision_sound && !show_collision_sounds) continue; unique_asset_list.push_back(item.mAssetID); LLSD element; element["id"] = item.mID; LLSD& playing_column = element["columns"][0]; playing_column["column"] = "playing"; if(item.mPlaying) playing_column["value"] = " Playing"; else playing_column["value"] = llformat("%.1f min ago", (LLTimer::getElapsedSeconds() - item.mTimeStopped) / 60.f); LLSD& type_column = element["columns"][1]; type_column["column"] = "type"; if(item.mType == LLAudioEngine::AUDIO_TYPE_UI) { // this shouldn't happen for now, as UI is forbidden in the log type_column["value"] = "UI"; } else { std::string type; if(is_avatar) { type = "Avatar"; } else { if(item.mIsTrigger) { type = "llTriggerSound"; } else { if(item.mIsLooped) type = "llLoopSound"; else type = "llPlaySound"; } } type_column["value"] = type; } LLSD& owner_column = element["columns"][2]; owner_column["column"] = "owner"; std::string fullname; BOOL is_group; if(gCacheName->getIfThere(item.mOwnerID, fullname, is_group)) { if(is_group) fullname += " (Group)"; owner_column["value"] = fullname; } else owner_column["value"] = item.mOwnerID.asString(); LLSD& sound_column = element["columns"][3]; sound_column["column"] = "sound"; if (item.mOwnerID == gAgent.getID()) sound_column["value"] = item.mAssetID.asString(); else sound_column["value"] = LLUUID::null.asString(); list->addElement(element, ADD_BOTTOM); } list->selectMultiple(selected_ids); list->setScrollPos(scroll_pos); return FALSE; }