diff options
| author | andreykproductengine <andreykproductengine@lindenlab.com> | 2018-10-31 15:57:19 +0200 | 
|---|---|---|
| committer | andreykproductengine <andreykproductengine@lindenlab.com> | 2018-10-31 15:57:19 +0200 | 
| commit | 25e046594464551d6d66eceee0471f10722c53ce (patch) | |
| tree | 9acaf5d6f04b7e9938255b66302551ddbe4cc289 | |
| parent | 9309c2c966a6df3ad6a42a1aa4d643b0bc54a71d (diff) | |
SL-9924 [EEP] Environment Settings permissions can be dropped by Save As button
| -rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 17 | ||||
| -rw-r--r-- | indra/newview/llfloaterfixedenvironment.cpp | 16 | ||||
| -rw-r--r-- | indra/newview/llsettingsvo.cpp | 9 | ||||
| -rw-r--r-- | indra/newview/llsettingsvo.h | 3 | 
4 files changed, 35 insertions, 10 deletions
| diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index 5a47e02926..11dc9a8280 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -1327,11 +1327,20 @@ void LLFloaterEditExtDayCycle::reblendSettings()  void LLFloaterEditExtDayCycle::doApplyCreateNewInventory(const LLSettingsDay::ptr_t &day, std::string settings_name)  { -    // This method knows what sort of settings object to create. -    LLUUID parent_id = mInventoryItem ? mInventoryItem->getParentUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS); - -    LLSettingsVOBase::createInventoryItem(day, parent_id, settings_name, +    if (mInventoryItem) +    { +        LLUUID parent_id = mInventoryItem->getParentUUID(); +        U32 next_owner_perm = mInventoryItem->getPermissions().getMaskNextOwner(); +        LLSettingsVOBase::createInventoryItem(day, next_owner_perm, parent_id, settings_name, +            [this](LLUUID asset_id, LLUUID inventory_id, LLUUID, LLSD results) { onInventoryCreated(asset_id, inventory_id, results); }); +    } +    else +    { +        LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS); +        // This method knows what sort of settings object to create. +        LLSettingsVOBase::createInventoryItem(day, parent_id, settings_name,              [this](LLUUID asset_id, LLUUID inventory_id, LLUUID, LLSD results) { onInventoryCreated(asset_id, inventory_id, results); }); +    }  }  void LLFloaterEditExtDayCycle::doApplyUpdateInventory(const LLSettingsDay::ptr_t &day) diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index d35dd5ec98..b9e23fb245 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -448,10 +448,20 @@ void LLFloaterFixedEnvironment::onButtonLoad()  void LLFloaterFixedEnvironment::doApplyCreateNewInventory(std::string settings_name)  { -    LLUUID parent_id = mInventoryItem ? mInventoryItem->getParentUUID() : gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS); -    // This method knows what sort of settings object to create. -    LLSettingsVOBase::createInventoryItem(mSettings, parent_id, settings_name, +    if (mInventoryItem) +    { +        LLUUID parent_id = mInventoryItem->getParentUUID(); +        U32 next_owner_perm = mInventoryItem->getPermissions().getMaskNextOwner(); +        LLSettingsVOBase::createInventoryItem(mSettings, next_owner_perm, parent_id, settings_name,              [this](LLUUID asset_id, LLUUID inventory_id, LLUUID, LLSD results) { onInventoryCreated(asset_id, inventory_id, results); }); +    } +    else +    { +        LLUUID parent_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_SETTINGS); +        // This method knows what sort of settings object to create. +        LLSettingsVOBase::createInventoryItem(mSettings, parent_id, settings_name, +            [this](LLUUID asset_id, LLUUID inventory_id, LLUUID, LLSD results) { onInventoryCreated(asset_id, inventory_id, results); }); +    }  }  void LLFloaterFixedEnvironment::doApplyUpdateInventory() diff --git a/indra/newview/llsettingsvo.cpp b/indra/newview/llsettingsvo.cpp index 3925f37703..0def17b32d 100644 --- a/indra/newview/llsettingsvo.cpp +++ b/indra/newview/llsettingsvo.cpp @@ -121,8 +121,13 @@ void LLSettingsVOBase::createNewInventoryItem(LLSettingsType::type_e stype, cons  void LLSettingsVOBase::createInventoryItem(const LLSettingsBase::ptr_t &settings, const LLUUID &parent_id, std::string settings_name, inventory_result_fn callback)  { +    U32 nextOwnerPerm = LLPermissions::DEFAULT.getMaskNextOwner(); +    createInventoryItem(settings, nextOwnerPerm, parent_id, settings_name, callback); +} + +void LLSettingsVOBase::createInventoryItem(const LLSettingsBase::ptr_t &settings, U32 next_owner_perm, const LLUUID &parent_id, std::string settings_name, inventory_result_fn callback) +{      LLTransactionID tid; -    U32             nextOwnerPerm = LLPermissions::DEFAULT.getMaskNextOwner();      if (!LLEnvironment::instance().isInventoryEnabled())      { @@ -144,7 +149,7 @@ void LLSettingsVOBase::createInventoryItem(const LLSettingsBase::ptr_t &settings      create_inventory_settings(gAgent.getID(), gAgent.getSessionID(),          parent_id, tid,          settings_name, "", -        settings->getSettingsTypeValue(), nextOwnerPerm, cb); +        settings->getSettingsTypeValue(), next_owner_perm, cb);  }  void LLSettingsVOBase::onInventoryItemCreated(const LLUUID &inventoryId, LLSettingsBase::ptr_t settings, inventory_result_fn callback) diff --git a/indra/newview/llsettingsvo.h b/indra/newview/llsettingsvo.h index 0e8312b849..1ad0091871 100644 --- a/indra/newview/llsettingsvo.h +++ b/indra/newview/llsettingsvo.h @@ -51,7 +51,8 @@ public:      static void     createNewInventoryItem(LLSettingsType::type_e stype, const LLUUID &parent_id, inventory_result_fn callback = inventory_result_fn());      static void     createInventoryItem(const LLSettingsBase::ptr_t &settings, const LLUUID &parent_id, std::string settings_name, inventory_result_fn callback = inventory_result_fn()); -     +    static void     createInventoryItem(const LLSettingsBase::ptr_t &settings, U32 next_owner_perm, const LLUUID &parent_id, std::string settings_name, inventory_result_fn callback = inventory_result_fn()); +      static void     updateInventoryItem(const LLSettingsBase::ptr_t &settings, LLUUID inv_item_id, inventory_result_fn callback = inventory_result_fn(), bool update_name = true);      static void     updateInventoryItem(const LLSettingsBase::ptr_t &settings, LLUUID object_id, LLUUID inv_item_id, inventory_result_fn callback = inventory_result_fn()); | 
