summaryrefslogtreecommitdiff
path: root/indra/newview/llfloaterfixedenvironment.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llfloaterfixedenvironment.cpp')
-rw-r--r--indra/newview/llfloaterfixedenvironment.cpp96
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);
}
//=========================================================================