diff options
-rw-r--r-- | indra/newview/llenvironment.h | 5 | ||||
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.cpp | 122 | ||||
-rw-r--r-- | indra/newview/llfloatereditextdaycycle.h | 40 | ||||
-rw-r--r-- | indra/newview/llfloaterfixedenvironment.cpp | 4 |
4 files changed, 148 insertions, 23 deletions
diff --git a/indra/newview/llenvironment.h b/indra/newview/llenvironment.h index e21f46d5b0..fb3bb9f051 100644 --- a/indra/newview/llenvironment.h +++ b/indra/newview/llenvironment.h @@ -77,13 +77,14 @@ public: enum EnvSelection_t { - ENV_EDIT, + ENV_EDIT = 0, ENV_LOCAL, ENV_PARCEL, ENV_REGION, ENV_DEFAULT, ENV_END, - ENV_CURRENT = -1 + ENV_CURRENT = -1, + ENV_NONE = -2 }; typedef boost::signals2::connection connection_t; diff --git a/indra/newview/llfloatereditextdaycycle.cpp b/indra/newview/llfloatereditextdaycycle.cpp index c57add32fe..222b530155 100644 --- a/indra/newview/llfloatereditextdaycycle.cpp +++ b/indra/newview/llfloatereditextdaycycle.cpp @@ -40,6 +40,7 @@ #include "lltimectrl.h" #include "llsettingsvo.h" +#include "llinventorymodel.h" // newview #include "llagent.h" @@ -60,6 +61,16 @@ static const std::string track_tabs[] = { }; +//========================================================================= +// **RIDER** + +const std::string LLFloaterFixedEnvironment::KEY_INVENTORY_ID("inventory_id"); +const std::string LLFloaterFixedEnvironment::KEY_LIVE_ENVIRONMENT("live_environment"); +const std::string LLFloaterFixedEnvironment::KEY_DAY_LENGTH("day_length"); +const std::string LLFloaterFixedEnvironment::KEY_DAY_OFFSET("day_offset"); + +// **RIDER** + LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key): LLFloater(key), mSaveButton(NULL), @@ -69,7 +80,11 @@ LLFloaterEditExtDayCycle::LLFloaterEditExtDayCycle(const LLSD &key): mCurrentTrack(4), mTimeSlider(NULL), mFramesSlider(NULL), - mCurrentTimeLabel(NULL) + mCurrentTimeLabel(NULL), + // **RIDER** + mInventoryId(), + mInventoryItem(nullptr) + // **RIDER** // , mTimeCtrl(NULL) // , mMakeDefaultCheckBox(NULL) // , @@ -114,19 +129,31 @@ void LLFloaterEditExtDayCycle::onOpen(const LLSD& key) LLEnvironment::instance().setSelectedEnvironment(LLEnvironment::ENV_EDIT); LLEnvironment::instance().updateEnvironment(); + // **RIDER** + + mEditingEnv = LLEnvironment::ENV_NONE; + mEditDay.reset(); + if (key.has(KEY_INVENTORY_ID)) + { + loadInventoryItem(key[KEY_INVENTORY_ID].asUUID()); + } + else if (key.has(KEY_LIVE_ENVIRONMENT)) + { + LLEnvironment::EnvSelection_t env = static_cast<LLEnvironment::EnvSelection_t>(key[KEY_LIVE_ENVIRONMENT].asInteger()); + + loadLiveEnvironment(env); + } + mDayLength.value(0); + mDayOffset.value(0); + if (key.has(KEY_DAY_LENGTH)) { - // TODO/TEMP - LLEnvironment::EnvSelection_t env = LLEnvironment::ENV_REGION; // should not be used - LLSettingsDay::ptr_t pday = LLEnvironment::instance().getEnvironmentDay(env); - mEditDay = pday->buildClone(); // pday should be passed as parameter - - S64Seconds daylength = LLEnvironment::instance().getEnvironmentDayLength(env); - S64Seconds dayoffset = LLEnvironment::instance().getEnvironmentDayOffset(env); - mDayLength = daylength; // should be passed as parameter - mDayOffset = dayoffset; // should be passed as parameter + mDayLength.value(key[KEY_DAY_LENGTH].asReal()); + mDayOffset.value(key[KEY_DAY_OFFSET].asReal()); } + // **RIDER** + LLLineEditor* name_field = getChild<LLLineEditor>("day_cycle_name"); name_field->setText(mEditDay->getName()); @@ -492,6 +519,81 @@ LLFloaterEditExtDayCycle::connection_t LLFloaterEditExtDayCycle::setEditCommitSi return mCommitSignal.connect(cb); } +// **RIDER** +void LLFloaterEditExtDayCycle::loadInventoryItem(const LLUUID &inventoryId) +{ + if (inventoryId.isNull()) + { + mInventoryItem = nullptr; + mInventoryId.setNull(); + return; + } + + mInventoryId = inventoryId; + LL_INFOS("SETTINGS") << "Setting edit inventory item to " << mInventoryId << "." << LL_ENDL; + mInventoryItem = gInventory.getItem(mInventoryId); + + if (!mInventoryItem) + { + LL_WARNS("SETTINGS") << "Could not find inventory item with Id = " << mInventoryId << LL_ENDL; + mInventoryId.setNull(); + mInventoryItem = nullptr; + return; + } + + LLSettingsVOBase::getSettingsAsset(mInventoryItem->getAssetUUID(), + [this](LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status, LLExtStat) { onAssetLoaded(asset_id, settins, status); }); +} + +void LLFloaterEditExtDayCycle::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status) +{ + mEditDay = settings; + updateEditEnvironment(); + syncronizeTabs(); + refresh(); +} + +void LLFloaterEditExtDayCycle::loadLiveEnvironment(LLEnvironment::EnvSelection_t env) +{ + mEditingEnv = env; + for (S32 idx = static_cast<S32>(env); idx <= LLEnvironment::ENV_DEFAULT; ++idx) + { + LLSettingsDay::ptr_t day = LLEnvironment::instance().getEnvironmentDay(static_cast<LLEnvironment::EnvSelection_t>(idx)); + + if (day) + { + mEditDay = day; + break; + } + } + + updateEditEnvironment(); + syncronizeTabs(); + refresh(); +} + +void LLFloaterEditExtDayCycle::updateEditEnvironment(void) +{ + LLEnvironment::instance().setEnvironment(LLEnvironment::ENV_EDIT, mEditDay); +} + +void LLFloaterFixedEnvironment::syncronizeTabs() +{ + LLView* tab_container = mWaterTabLayoutContainer->getChild<LLView>("water_tabs"); //can't extract panels directly, since they are in 'tuple' + + S32 count = mTab->getTabCount(); + + for (S32 idx = 0; idx < count; ++idx) + { + LLSettingsEditPanel *panel = static_cast<LLSettingsEditPanel *>(mTab->getPanelByIndex(idx)); + if (panel) + panel->setSettings(mSettings); + } +} + +// **RIDER** + + // // virtual // void LLFloaterEditExtDayCycle::draw() diff --git a/indra/newview/llfloatereditextdaycycle.h b/indra/newview/llfloatereditextdaycycle.h index c67cfdd274..3185644df9 100644 --- a/indra/newview/llfloatereditextdaycycle.h +++ b/indra/newview/llfloatereditextdaycycle.h @@ -48,6 +48,13 @@ class LLFloaterEditExtDayCycle : public LLFloater LOG_CLASS(LLFloaterEditExtDayCycle); public: + // **RIDER** + static const std::string KEY_INVENTORY_ID; + static const std::string KEY_LIVE_ENVIRONMENT; + static const std::string KEY_DAY_LENGTH; + static const std::string KEY_DAY_OFFSET; + // **RIDER** + typedef boost::signals2::signal<void(LLSettingsDay::ptr_t)> edit_commit_signal_t; typedef boost::signals2::connection connection_t; @@ -97,6 +104,16 @@ private: void removeCurrentSliderFrame(); //void updateTrack(); // slider->track, todo: better name + // **RIDER** + void loadInventoryItem(const LLUUID &inventoryId); + void onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status); + void loadLiveEnvironment(LLEnvironment::EnvSelection_t env); + + void updateEditEnvironment(); + void syncronizeTabs(); + // **RIDER** + + // /// refresh the day cycle combobox // void refreshDayCyclesList(); // @@ -133,24 +150,29 @@ private: // // static std::string getRegionName(); - LLSettingsDay::ptr_t mSavedDay; LLSettingsDay::ptr_t mEditDay; S64Seconds mDayLength; S64Seconds mDayOffset; U32 mCurrentTrack; std::string mLastFrameSlider; - LLButton* mSaveButton; - LLButton* mCancelButton; - LLButton* mUploadButton; + LLButton* mSaveButton; + LLButton* mCancelButton; + LLButton* mUploadButton; edit_commit_signal_t mCommitSignal; - LLMultiSliderCtrl* mTimeSlider; - LLMultiSliderCtrl* mFramesSlider; - LLView* mSkyTabLayoutContainer; - LLView* mWaterTabLayoutContainer; - LLTextBox* mCurrentTimeLabel; + LLMultiSliderCtrl* mTimeSlider; + LLMultiSliderCtrl* mFramesSlider; + LLView* mSkyTabLayoutContainer; + LLView* mWaterTabLayoutContainer; + LLTextBox* mCurrentTimeLabel; + + // **RIDER** + LLUUID mInventoryId; + LLInventoryItem * mInventoryItem; + LLEnvironment::EnvSelection_t mEditingEnv; + // **RIDER** // map of sliders to parameters typedef std::pair<F32, LLSettingsBase::ptr_t> framedata_t; diff --git a/indra/newview/llfloaterfixedenvironment.cpp b/indra/newview/llfloaterfixedenvironment.cpp index f03c8ba7d1..8365311179 100644 --- a/indra/newview/llfloaterfixedenvironment.cpp +++ b/indra/newview/llfloaterfixedenvironment.cpp @@ -210,9 +210,9 @@ void LLFloaterFixedEnvironment::loadInventoryItem(const LLUUID &inventoryId) [this](LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status, LLExtStat) { onAssetLoaded(asset_id, settins, status); }); } -void LLFloaterFixedEnvironment::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settins, S32 status) +void LLFloaterFixedEnvironment::onAssetLoaded(LLUUID asset_id, LLSettingsBase::ptr_t settings, S32 status) { - mSettings = settins; + mSettings = settings; updateEditEnvironment(); syncronizeTabs(); refresh(); |