diff options
author | Gilbert Gonzales <gilbert@lindenlab.com> | 2013-06-26 17:55:31 -0700 |
---|---|---|
committer | Gilbert Gonzales <gilbert@lindenlab.com> | 2013-06-26 17:55:31 -0700 |
commit | 173b4ec4561793ca5913c7ec89bc8b83a71b2702 (patch) | |
tree | 0c1ecc1ca7cec546f00daa25199ea548d4bf4d3d /indra/newview/llfloatersocial.cpp | |
parent | bb59fff5a0e60b16e0726fb2da6cc6ee9cc3569c (diff) | |
parent | de89e384544176f2e10225481ca2b0e7901167fb (diff) |
merge
Diffstat (limited to 'indra/newview/llfloatersocial.cpp')
-rw-r--r-- | indra/newview/llfloatersocial.cpp | 81 |
1 files changed, 52 insertions, 29 deletions
diff --git a/indra/newview/llfloatersocial.cpp b/indra/newview/llfloatersocial.cpp index f16c5601c8..80cdd3a0cb 100644 --- a/indra/newview/llfloatersocial.cpp +++ b/indra/newview/llfloatersocial.cpp @@ -35,8 +35,7 @@ #include "llfacebookconnect.h" #include "llfloaterreg.h" #include "lliconctrl.h" -#include "llresmgr.h" // LLLocale -#include "llsdserialize.h" +#include "llloadingindicator.h" #include "llslurl.h" #include "llviewerregion.h" #include "llviewercontrol.h" @@ -396,11 +395,61 @@ void LLSocialPhotoPanel::onSend() } -LLSocialCheckinPanel::LLSocialCheckinPanel() +LLSocialCheckinPanel::LLSocialCheckinPanel() : + mMapUrl(""), + mReloadingMapTexture(false) { mCommitCallbackRegistrar.add("SocialSharing.SendCheckin", boost::bind(&LLSocialCheckinPanel::onSend, this)); } +BOOL LLSocialCheckinPanel::postBuild() +{ + // Keep pointers to widgets so we don't traverse the UI hierarchy too often + mMapLoadingIndicator = getChild<LLUICtrl>("map_loading_indicator"); + mMapPlaceholder = getChild<LLIconCtrl>("map_placeholder"); + mMapCheckBox = getChild<LLCheckBoxCtrl>("add_place_view_cb"); + mMapCheckBoxValue = mMapCheckBox->get(); + + return LLPanel::postBuild(); +} + +void LLSocialCheckinPanel::draw() +{ + std::string map_url = get_map_url(); + // Did we change location? + if (map_url != mMapUrl) + { + mMapUrl = map_url; + // Load the map tile + mMapTexture = LLViewerTextureManager::getFetchedTextureFromUrl(mMapUrl, FTT_MAP_TILE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); + mMapTexture->setBoostLevel(LLGLTexture::BOOST_MAP); + mReloadingMapTexture = true; + // In the meantime, put the "loading" indicator on, hide the tile map and disable the checkbox + mMapLoadingIndicator->setVisible(true); + mMapPlaceholder->setVisible(false); + mMapCheckBoxValue = mMapCheckBox->get(); + mMapCheckBox->set(false); + mMapCheckBox->setEnabled(false); + } + // Are we done loading the map tile? + if (mReloadingMapTexture && mMapTexture->isFullyLoaded()) + { + // Don't do it again next time around + mReloadingMapTexture = false; + // Convert the map texture to the appropriate image object + LLPointer<LLUIImage> ui_image = new LLUIImage(mMapUrl, mMapTexture); + // Load the map widget with the correct map tile image + mMapPlaceholder->setImage(ui_image); + // Now hide the loading indicator, bring the tile in view and reenable the checkbox with its previous value + mMapLoadingIndicator->setVisible(false); + mMapPlaceholder->setVisible(true); + mMapCheckBox->setEnabled(true); + mMapCheckBox->set(mMapCheckBoxValue); + } + + LLPanel::draw(); +} + void LLSocialCheckinPanel::onSend() { // Get the location SLURL @@ -435,8 +484,6 @@ void LLSocialCheckinPanel::onSend() LLFloaterSocial::LLFloaterSocial(const LLSD& key) : LLFloater(key), - mMapUrl(""), - mReloadingMapTexture(false), mSocialPhotoPanel(NULL) { mCommitCallbackRegistrar.add("SocialSharing.Cancel", boost::bind(&LLFloaterSocial::onCancel, this)); @@ -450,36 +497,12 @@ void LLFloaterSocial::onCancel() BOOL LLFloaterSocial::postBuild() { mSocialPhotoPanel = static_cast<LLSocialPhotoPanel*>(getChild<LLUICtrl>("social_photo_tab")); - // Keep a pointer to the map tile placeholder texture - mMapPlaceholder = getChild<LLIconCtrl>("map_placeholder")->getImage(); return LLFloater::postBuild(); } /*virtual*/ void LLFloaterSocial::draw() { - std::string map_url = get_map_url(); - // Did we change location? - if (map_url != mMapUrl) - { - mMapUrl = map_url; - // Load the map tile - mMapTexture = LLViewerTextureManager::getFetchedTextureFromUrl(mMapUrl, FTT_MAP_TILE, TRUE, LLGLTexture::BOOST_NONE, LLViewerTexture::LOD_TEXTURE); - mMapTexture->setBoostLevel(LLGLTexture::BOOST_MAP); - mReloadingMapTexture = true; - // In the meantime, put back the "loading" placeholder in the map widget - getChild<LLIconCtrl>("map_placeholder")->setImage(mMapPlaceholder); - } - // Are we done loading the map tile? - if (mReloadingMapTexture && mMapTexture->isFullyLoaded()) - { - // Don't do it again next time around - mReloadingMapTexture = false; - // Convert the map texture to the appropriate image object - LLPointer<LLUIImage> ui_image = new LLUIImage(mMapUrl, mMapTexture); - // Point map widget to correct map tile - getChild<LLIconCtrl>("map_placeholder")->setImage(ui_image); - } LLFloater::draw(); } |