diff options
Diffstat (limited to 'indra/newview/llfloaterfixedenvironment.cpp')
-rw-r--r-- | indra/newview/llfloaterfixedenvironment.cpp | 96 |
1 files changed, 57 insertions, 39 deletions
diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index 09a05eb7e2..d65a578a6d 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -38,7 +38,7 @@ #include "lltabcontainer.h" #include "llfilepicker.h" #include "llsettingspicker.h" - +#include "llviewermenufile.h" // LLFilePickerReplyThread #include "llviewerparcelmgr.h" // newview @@ -292,12 +292,30 @@ void LLFloaterFixedEnvironment::checkAndConfirmSettingsLoss(LLFloaterFixedEnviro void LLFloaterFixedEnvironment::onPickerCommitSetting(LLUUID asset_id) { + mInventoryItem = NULL; + mInventoryId.setNull(); + if (!mInventoryFloater.isDead()) + { + LLFloaterSettingsPicker *picker = static_cast<LLFloaterSettingsPicker *>(mInventoryFloater.get()); + if (picker) + { + mInventoryId = picker->findItemID(asset_id, false); + mInventoryItem = gInventory.getItem(mInventoryId); + } + } + LLSettingsVOBase::getSettingsAsset(asset_id, [this](LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status, LLExtStat) { onAssetLoaded(asset_id, settings, status); }); } void LLFloaterFixedEnvironment::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status) { + if (mInventoryItem && mInventoryItem->getAssetUUID() != asset_id) + { + LL_WARNS("ENVIRONMENT") << "Discarding obsolete asset callback" << LL_ENDL; + return; + } + if (!settings || status) { LLSD args; @@ -581,30 +599,29 @@ void LLFloaterFixedEnvironmentWater::onOpen(const LLSD& key) void LLFloaterFixedEnvironmentWater::doImportFromDisk() { // Load a a legacy Windlight XML from disk. + (new LLFilePickerReplyThread(boost::bind(&LLFloaterFixedEnvironmentWater::loadWaterSettingFromFile, this, _1), LLFilePicker::FFLOAD_XML, false))->getFile(); +} - LLFilePicker& picker = LLFilePicker::instance(); - if (picker.getOpenFile(LLFilePicker::FFLOAD_XML)) - { - std::string filename = picker.getFirstFile(); - - LL_WARNS("LAPRAS") << "Selected file: " << filename << LL_ENDL; - LLSettingsWater::ptr_t legacywater = LLEnvironment::createWaterFromLegacyPreset(filename); - - if (!legacywater) - { - LLSD args(LLSDMap("FILE", filename)); - LLNotificationsUtil::add("WLImportFail", args); - return; - } +void LLFloaterFixedEnvironmentWater::loadWaterSettingFromFile(const std::vector<std::string>& filenames) +{ + if (filenames.size() < 1) return; + std::string filename = filenames[0]; + LL_WARNS("LAPRAS") << "Selected file: " << filename << LL_ENDL; + LLSettingsWater::ptr_t legacywater = LLEnvironment::createWaterFromLegacyPreset(filename); - loadInventoryItem(LLUUID::null); + if (!legacywater) + { + LLSD args(LLSDMap("FILE", filename)); + LLNotificationsUtil::add("WLImportFail", args); + return; + } - setDirtyFlag(); - LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacywater); - setEditSettings(legacywater); - LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true); + loadInventoryItem(LLUUID::null); - } + setDirtyFlag(); + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacywater); + setEditSettings(legacywater); + LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true); } //========================================================================= @@ -669,30 +686,31 @@ void LLFloaterFixedEnvironmentSky::onOpen(const LLSD& key) void LLFloaterFixedEnvironmentSky::doImportFromDisk() { // Load a a legacy Windlight XML from disk. + (new LLFilePickerReplyThread(boost::bind(&LLFloaterFixedEnvironmentSky::loadSkySettingFromFile, this, _1), LLFilePicker::FFLOAD_XML, false))->getFile(); +} - LLFilePicker& picker = LLFilePicker::instance(); - if (picker.getOpenFile(LLFilePicker::FFLOAD_XML)) - { - std::string filename = picker.getFirstFile(); +void LLFloaterFixedEnvironmentSky::loadSkySettingFromFile(const std::vector<std::string>& filenames) +{ + if (filenames.size() < 1) return; + std::string filename = filenames[0]; - LL_WARNS("LAPRAS") << "Selected file: " << filename << LL_ENDL; - LLSettingsSky::ptr_t legacysky = LLEnvironment::createSkyFromLegacyPreset(filename); + LL_WARNS("LAPRAS") << "Selected file: " << filename << LL_ENDL; + LLSettingsSky::ptr_t legacysky = LLEnvironment::createSkyFromLegacyPreset(filename); - if (!legacysky) - { - LLSD args(LLSDMap("FILE", filename)); - LLNotificationsUtil::add("WLImportFail", args); + if (!legacysky) + { + LLSD args(LLSDMap("FILE", filename)); + LLNotificationsUtil::add("WLImportFail", args); - return; - } + return; + } - loadInventoryItem(LLUUID::null); + loadInventoryItem(LLUUID::null); - clearDirtyFlag(); - LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacysky); - setEditSettings(legacysky); - LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true); - } + clearDirtyFlag(); + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, legacysky); + setEditSettings(legacysky); + LLEnvironment::instance().updateEnvironment(LLEnvironment::TRANSITION_FAST, true); } //========================================================================= |