diff options
Diffstat (limited to 'indra/newview/llpaneltopinfobar.cpp')
-rw-r--r-- | indra/newview/llpaneltopinfobar.cpp | 618 |
1 files changed, 309 insertions, 309 deletions
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp index 0723a78704..499c290c66 100644 --- a/indra/newview/llpaneltopinfobar.cpp +++ b/indra/newview/llpaneltopinfobar.cpp @@ -5,21 +5,21 @@ * $LicenseInfo:firstyear=2010&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -49,432 +49,432 @@ class LLPanelTopInfoBar::LLParcelChangeObserver : public LLParcelObserver { public: - LLParcelChangeObserver(LLPanelTopInfoBar* topInfoBar) : mTopInfoBar(topInfoBar) {} + LLParcelChangeObserver(LLPanelTopInfoBar* topInfoBar) : mTopInfoBar(topInfoBar) {} private: - /*virtual*/ void changed() - { - if (mTopInfoBar) - { - mTopInfoBar->updateParcelIcons(); - } - } - - LLPanelTopInfoBar* mTopInfoBar; + /*virtual*/ void changed() + { + if (mTopInfoBar) + { + mTopInfoBar->updateParcelIcons(); + } + } + + LLPanelTopInfoBar* mTopInfoBar; }; LLPanelTopInfoBar::LLPanelTopInfoBar(): mParcelChangedObserver(0) { - buildFromFile( "panel_topinfo_bar.xml"); + buildFromFile( "panel_topinfo_bar.xml"); } LLPanelTopInfoBar::~LLPanelTopInfoBar() { - if (mParcelChangedObserver) - { - LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangedObserver); - delete mParcelChangedObserver; - } - - if (mParcelPropsCtrlConnection.connected()) - { - mParcelPropsCtrlConnection.disconnect(); - } - - if (mParcelMgrConnection.connected()) - { - mParcelMgrConnection.disconnect(); - } - - if (mShowCoordsCtrlConnection.connected()) - { - mShowCoordsCtrlConnection.disconnect(); - } + if (mParcelChangedObserver) + { + LLViewerParcelMgr::getInstance()->removeObserver(mParcelChangedObserver); + delete mParcelChangedObserver; + } + + if (mParcelPropsCtrlConnection.connected()) + { + mParcelPropsCtrlConnection.disconnect(); + } + + if (mParcelMgrConnection.connected()) + { + mParcelMgrConnection.disconnect(); + } + + if (mShowCoordsCtrlConnection.connected()) + { + mShowCoordsCtrlConnection.disconnect(); + } } void LLPanelTopInfoBar::initParcelIcons() { - mParcelIcon[VOICE_ICON] = getChild<LLIconCtrl>("voice_icon"); - mParcelIcon[FLY_ICON] = getChild<LLIconCtrl>("fly_icon"); - mParcelIcon[PUSH_ICON] = getChild<LLIconCtrl>("push_icon"); - mParcelIcon[BUILD_ICON] = getChild<LLIconCtrl>("build_icon"); - mParcelIcon[SCRIPTS_ICON] = getChild<LLIconCtrl>("scripts_icon"); - mParcelIcon[DAMAGE_ICON] = getChild<LLIconCtrl>("damage_icon"); - mParcelIcon[SEE_AVATARS_ICON] = getChild<LLIconCtrl>("see_avatars_icon"); - - mParcelIcon[VOICE_ICON]->setToolTip(LLTrans::getString("LocationCtrlVoiceTooltip")); - mParcelIcon[FLY_ICON]->setToolTip(LLTrans::getString("LocationCtrlFlyTooltip")); - mParcelIcon[PUSH_ICON]->setToolTip(LLTrans::getString("LocationCtrlPushTooltip")); - mParcelIcon[BUILD_ICON]->setToolTip(LLTrans::getString("LocationCtrlBuildTooltip")); - mParcelIcon[SCRIPTS_ICON]->setToolTip(LLTrans::getString("LocationCtrlScriptsTooltip")); - mParcelIcon[DAMAGE_ICON]->setToolTip(LLTrans::getString("LocationCtrlDamageTooltip")); - mParcelIcon[SEE_AVATARS_ICON]->setToolTip(LLTrans::getString("LocationCtrlSeeAVsTooltip")); - - mParcelIcon[VOICE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, VOICE_ICON)); - mParcelIcon[FLY_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, FLY_ICON)); - mParcelIcon[PUSH_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, PUSH_ICON)); - mParcelIcon[BUILD_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, BUILD_ICON)); - mParcelIcon[SCRIPTS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SCRIPTS_ICON)); - mParcelIcon[DAMAGE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, DAMAGE_ICON)); - mParcelIcon[SEE_AVATARS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SEE_AVATARS_ICON)); - - mDamageText->setText(LLStringExplicit("100%")); + mParcelIcon[VOICE_ICON] = getChild<LLIconCtrl>("voice_icon"); + mParcelIcon[FLY_ICON] = getChild<LLIconCtrl>("fly_icon"); + mParcelIcon[PUSH_ICON] = getChild<LLIconCtrl>("push_icon"); + mParcelIcon[BUILD_ICON] = getChild<LLIconCtrl>("build_icon"); + mParcelIcon[SCRIPTS_ICON] = getChild<LLIconCtrl>("scripts_icon"); + mParcelIcon[DAMAGE_ICON] = getChild<LLIconCtrl>("damage_icon"); + mParcelIcon[SEE_AVATARS_ICON] = getChild<LLIconCtrl>("see_avatars_icon"); + + mParcelIcon[VOICE_ICON]->setToolTip(LLTrans::getString("LocationCtrlVoiceTooltip")); + mParcelIcon[FLY_ICON]->setToolTip(LLTrans::getString("LocationCtrlFlyTooltip")); + mParcelIcon[PUSH_ICON]->setToolTip(LLTrans::getString("LocationCtrlPushTooltip")); + mParcelIcon[BUILD_ICON]->setToolTip(LLTrans::getString("LocationCtrlBuildTooltip")); + mParcelIcon[SCRIPTS_ICON]->setToolTip(LLTrans::getString("LocationCtrlScriptsTooltip")); + mParcelIcon[DAMAGE_ICON]->setToolTip(LLTrans::getString("LocationCtrlDamageTooltip")); + mParcelIcon[SEE_AVATARS_ICON]->setToolTip(LLTrans::getString("LocationCtrlSeeAVsTooltip")); + + mParcelIcon[VOICE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, VOICE_ICON)); + mParcelIcon[FLY_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, FLY_ICON)); + mParcelIcon[PUSH_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, PUSH_ICON)); + mParcelIcon[BUILD_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, BUILD_ICON)); + mParcelIcon[SCRIPTS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SCRIPTS_ICON)); + mParcelIcon[DAMAGE_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, DAMAGE_ICON)); + mParcelIcon[SEE_AVATARS_ICON]->setMouseDownCallback(boost::bind(&LLPanelTopInfoBar::onParcelIconClick, this, SEE_AVATARS_ICON)); + + mDamageText->setText(LLStringExplicit("100%")); } void LLPanelTopInfoBar::handleLoginComplete() { - // An agent parcel update hasn't occurred yet, so - // we have to manually set location and the icons. - update(); + // An agent parcel update hasn't occurred yet, so + // we have to manually set location and the icons. + update(); } BOOL LLPanelTopInfoBar::handleRightMouseDown(S32 x, S32 y, MASK mask) { - if(!LLUICtrl::CommitCallbackRegistry::getValue("TopInfoBar.Action")) - { - LLUICtrl::CommitCallbackRegistry::currentRegistrar() - .add("TopInfoBar.Action", boost::bind(&LLPanelTopInfoBar::onContextMenuItemClicked, this, _2)); - } - show_topinfobar_context_menu(this, x, y); - return TRUE; + if(!LLUICtrl::CommitCallbackRegistry::getValue("TopInfoBar.Action")) + { + LLUICtrl::CommitCallbackRegistry::currentRegistrar() + .add("TopInfoBar.Action", boost::bind(&LLPanelTopInfoBar::onContextMenuItemClicked, this, _2)); + } + show_topinfobar_context_menu(this, x, y); + return TRUE; } BOOL LLPanelTopInfoBar::postBuild() { - mInfoBtn = getChild<LLButton>("place_info_btn"); - mInfoBtn->setClickedCallback(boost::bind(&LLPanelTopInfoBar::onInfoButtonClicked, this)); - mInfoBtn->setToolTip(LLTrans::getString("LocationCtrlInfoBtnTooltip")); + mInfoBtn = getChild<LLButton>("place_info_btn"); + mInfoBtn->setClickedCallback(boost::bind(&LLPanelTopInfoBar::onInfoButtonClicked, this)); + mInfoBtn->setToolTip(LLTrans::getString("LocationCtrlInfoBtnTooltip")); - mParcelInfoText = getChild<LLTextBox>("parcel_info_text"); - mDamageText = getChild<LLTextBox>("damage_text"); + mParcelInfoText = getChild<LLTextBox>("parcel_info_text"); + mDamageText = getChild<LLTextBox>("damage_text"); - initParcelIcons(); + initParcelIcons(); - mParcelChangedObserver = new LLParcelChangeObserver(this); - LLViewerParcelMgr::getInstance()->addObserver(mParcelChangedObserver); + mParcelChangedObserver = new LLParcelChangeObserver(this); + LLViewerParcelMgr::getInstance()->addObserver(mParcelChangedObserver); - // Connecting signal for updating parcel icons on "Show Parcel Properties" setting change. - LLControlVariable* ctrl = gSavedSettings.getControl("NavBarShowParcelProperties").get(); - if (ctrl) - { - mParcelPropsCtrlConnection = ctrl->getSignal()->connect(boost::bind(&LLPanelTopInfoBar::updateParcelIcons, this)); - } + // Connecting signal for updating parcel icons on "Show Parcel Properties" setting change. + LLControlVariable* ctrl = gSavedSettings.getControl("NavBarShowParcelProperties").get(); + if (ctrl) + { + mParcelPropsCtrlConnection = ctrl->getSignal()->connect(boost::bind(&LLPanelTopInfoBar::updateParcelIcons, this)); + } - // Connecting signal for updating parcel text on "Show Coordinates" setting change. - ctrl = gSavedSettings.getControl("NavBarShowCoordinates").get(); - if (ctrl) - { - mShowCoordsCtrlConnection = ctrl->getSignal()->connect(boost::bind(&LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged, this)); - } + // Connecting signal for updating parcel text on "Show Coordinates" setting change. + ctrl = gSavedSettings.getControl("NavBarShowCoordinates").get(); + if (ctrl) + { + mShowCoordsCtrlConnection = ctrl->getSignal()->connect(boost::bind(&LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged, this)); + } - mParcelMgrConnection = gAgent.addParcelChangedCallback( - boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this)); + mParcelMgrConnection = gAgent.addParcelChangedCallback( + boost::bind(&LLPanelTopInfoBar::onAgentParcelChange, this)); - setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChanged, this, _2)); + setVisibleCallback(boost::bind(&LLPanelTopInfoBar::onVisibilityChanged, this, _2)); - return TRUE; + return TRUE; } void LLPanelTopInfoBar::onNavBarShowParcelPropertiesCtrlChanged() { - std::string new_text; + std::string new_text; - // don't need to have separate show_coords variable; if user requested the coords to be shown - // they will be added during the next call to the draw() method. - buildLocationString(new_text, false); - setParcelInfoText(new_text); + // don't need to have separate show_coords variable; if user requested the coords to be shown + // they will be added during the next call to the draw() method. + buildLocationString(new_text, false); + setParcelInfoText(new_text); } // when panel is shown, all minimized floaters should be shifted downwards to prevent overlapping of // PanelTopInfoBar. See EXT-7951. void LLPanelTopInfoBar::onVisibilityChanged(const LLSD& show) { - // this height is used as a vertical offset for ALREADY MINIMIZED floaters - // when PanelTopInfoBar visibility changes - S32 height = getRect().getHeight(); + // this height is used as a vertical offset for ALREADY MINIMIZED floaters + // when PanelTopInfoBar visibility changes + S32 height = getRect().getHeight(); - // this vertical offset is used for a start minimize position of floaters that - // are NOT MIMIMIZED YET - S32 minimize_pos_offset = 0; + // this vertical offset is used for a start minimize position of floaters that + // are NOT MIMIMIZED YET + S32 minimize_pos_offset = 0; - if (show.asBoolean()) - { - height = minimize_pos_offset = -height; - } + if (show.asBoolean()) + { + height = minimize_pos_offset = -height; + } - gFloaterView->shiftFloaters(0, height); - gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset); + gFloaterView->shiftFloaters(0, height); + gFloaterView->setMinimizePositionVerticalOffset(minimize_pos_offset); } boost::signals2::connection LLPanelTopInfoBar::setResizeCallback( const resize_signal_t::slot_type& cb ) { - return mResizeSignal.connect(cb); + return mResizeSignal.connect(cb); } void LLPanelTopInfoBar::draw() { - updateParcelInfoText(); - updateHealth(); + updateParcelInfoText(); + updateHealth(); - LLPanel::draw(); + LLPanel::draw(); } void LLPanelTopInfoBar::buildLocationString(std::string& loc_str, bool show_coords) { - LLAgentUI::ELocationFormat format = - (show_coords ? LLAgentUI::LOCATION_FORMAT_FULL : LLAgentUI::LOCATION_FORMAT_NO_COORDS); + LLAgentUI::ELocationFormat format = + (show_coords ? LLAgentUI::LOCATION_FORMAT_FULL : LLAgentUI::LOCATION_FORMAT_NO_COORDS); - if (!LLAgentUI::buildLocationString(loc_str, format)) - { - loc_str = "???"; - } + if (!LLAgentUI::buildLocationString(loc_str, format)) + { + loc_str = "???"; + } } void LLPanelTopInfoBar::setParcelInfoText(const std::string& new_text) { - LLRect old_rect = getRect(); - const LLFontGL* font = mParcelInfoText->getFont(); - S32 new_text_width = font->getWidth(new_text); + LLRect old_rect = getRect(); + const LLFontGL* font = mParcelInfoText->getFont(); + S32 new_text_width = font->getWidth(new_text); - mParcelInfoText->setText(new_text); + mParcelInfoText->setText(new_text); - LLRect rect = mParcelInfoText->getRect(); - rect.setOriginAndSize(rect.mLeft, rect.mBottom, new_text_width, rect.getHeight()); + LLRect rect = mParcelInfoText->getRect(); + rect.setOriginAndSize(rect.mLeft, rect.mBottom, new_text_width, rect.getHeight()); - mParcelInfoText->reshape(rect.getWidth(), rect.getHeight(), TRUE); - mParcelInfoText->setRect(rect); - layoutParcelIcons(); + mParcelInfoText->reshape(rect.getWidth(), rect.getHeight(), TRUE); + mParcelInfoText->setRect(rect); + layoutParcelIcons(); - if (old_rect != getRect()) - { - mResizeSignal(); - } + if (old_rect != getRect()) + { + mResizeSignal(); + } } void LLPanelTopInfoBar::update() { - std::string new_text; + std::string new_text; - // don't need to have separate show_coords variable; if user requested the coords to be shown - // they will be added during the next call to the draw() method. - buildLocationString(new_text, false); - setParcelInfoText(new_text); + // don't need to have separate show_coords variable; if user requested the coords to be shown + // they will be added during the next call to the draw() method. + buildLocationString(new_text, false); + setParcelInfoText(new_text); - updateParcelIcons(); + updateParcelIcons(); } void LLPanelTopInfoBar::updateParcelInfoText() { - static LLUICachedControl<bool> show_coords("NavBarShowCoordinates", false); + static LLUICachedControl<bool> show_coords("NavBarShowCoordinates", false); - if (show_coords) - { - std::string new_text; + if (show_coords) + { + std::string new_text; - buildLocationString(new_text, show_coords); - setParcelInfoText(new_text); - } + buildLocationString(new_text, show_coords); + setParcelInfoText(new_text); + } } void LLPanelTopInfoBar::updateParcelIcons() { - LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); - - LLViewerRegion* agent_region = gAgent.getRegion(); - LLParcel* agent_parcel = vpm->getAgentParcel(); - if (!agent_region || !agent_parcel) - return; - - if (gSavedSettings.getBOOL("NavBarShowParcelProperties")) - { - LLParcel* current_parcel; - LLViewerRegion* selection_region = vpm->getSelectionRegion(); - LLParcel* selected_parcel = vpm->getParcelSelection()->getParcel(); - - // If agent is in selected parcel we use its properties because - // they are updated more often by LLViewerParcelMgr than agent parcel properties. - // See LLViewerParcelMgr::processParcelProperties(). - // This is needed to reflect parcel restrictions changes without having to leave - // the parcel and then enter it again. See EXT-2987 - if (selected_parcel && selected_parcel->getLocalID() == agent_parcel->getLocalID() - && selection_region == agent_region) - { - current_parcel = selected_parcel; - } - else - { - current_parcel = agent_parcel; - } - - bool allow_voice = vpm->allowAgentVoice(agent_region, current_parcel); - bool allow_fly = vpm->allowAgentFly(agent_region, current_parcel); - bool allow_push = vpm->allowAgentPush(agent_region, current_parcel); - bool allow_build = vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610. - bool allow_scripts = vpm->allowAgentScripts(agent_region, current_parcel); - bool allow_damage = vpm->allowAgentDamage(agent_region, current_parcel); - bool see_avs = current_parcel->getSeeAVs(); - - // Most icons are "block this ability" - mParcelIcon[VOICE_ICON]->setVisible( !allow_voice ); - mParcelIcon[FLY_ICON]->setVisible( !allow_fly ); - mParcelIcon[PUSH_ICON]->setVisible( !allow_push ); - mParcelIcon[BUILD_ICON]->setVisible( !allow_build ); - mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts ); - mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage ); - mDamageText->setVisible(allow_damage); - mParcelIcon[SEE_AVATARS_ICON]->setVisible( !see_avs ); - - layoutParcelIcons(); - } - else - { - for (S32 i = 0; i < ICON_COUNT; ++i) - { - mParcelIcon[i]->setVisible(false); - } - mDamageText->setVisible(false); - } + LLViewerParcelMgr* vpm = LLViewerParcelMgr::getInstance(); + + LLViewerRegion* agent_region = gAgent.getRegion(); + LLParcel* agent_parcel = vpm->getAgentParcel(); + if (!agent_region || !agent_parcel) + return; + + if (gSavedSettings.getBOOL("NavBarShowParcelProperties")) + { + LLParcel* current_parcel; + LLViewerRegion* selection_region = vpm->getSelectionRegion(); + LLParcel* selected_parcel = vpm->getParcelSelection()->getParcel(); + + // If agent is in selected parcel we use its properties because + // they are updated more often by LLViewerParcelMgr than agent parcel properties. + // See LLViewerParcelMgr::processParcelProperties(). + // This is needed to reflect parcel restrictions changes without having to leave + // the parcel and then enter it again. See EXT-2987 + if (selected_parcel && selected_parcel->getLocalID() == agent_parcel->getLocalID() + && selection_region == agent_region) + { + current_parcel = selected_parcel; + } + else + { + current_parcel = agent_parcel; + } + + bool allow_voice = vpm->allowAgentVoice(agent_region, current_parcel); + bool allow_fly = vpm->allowAgentFly(agent_region, current_parcel); + bool allow_push = vpm->allowAgentPush(agent_region, current_parcel); + bool allow_build = vpm->allowAgentBuild(current_parcel); // true when anyone is allowed to build. See EXT-4610. + bool allow_scripts = vpm->allowAgentScripts(agent_region, current_parcel); + bool allow_damage = vpm->allowAgentDamage(agent_region, current_parcel); + bool see_avs = current_parcel->getSeeAVs(); + + // Most icons are "block this ability" + mParcelIcon[VOICE_ICON]->setVisible( !allow_voice ); + mParcelIcon[FLY_ICON]->setVisible( !allow_fly ); + mParcelIcon[PUSH_ICON]->setVisible( !allow_push ); + mParcelIcon[BUILD_ICON]->setVisible( !allow_build ); + mParcelIcon[SCRIPTS_ICON]->setVisible( !allow_scripts ); + mParcelIcon[DAMAGE_ICON]->setVisible( allow_damage ); + mDamageText->setVisible(allow_damage); + mParcelIcon[SEE_AVATARS_ICON]->setVisible( !see_avs ); + + layoutParcelIcons(); + } + else + { + for (S32 i = 0; i < ICON_COUNT; ++i) + { + mParcelIcon[i]->setVisible(false); + } + mDamageText->setVisible(false); + } } void LLPanelTopInfoBar::updateHealth() { - static LLUICachedControl<bool> show_icons("NavBarShowParcelProperties", false); - - // *FIXME: Status bar owns health information, should be in agent - if (show_icons && gStatusBar) - { - static S32 last_health = -1; - S32 health = gStatusBar->getHealth(); - if (health != last_health) - { - std::string text = llformat("%d%%", health); - mDamageText->setText(text); - last_health = health; - } - } + static LLUICachedControl<bool> show_icons("NavBarShowParcelProperties", false); + + // *FIXME: Status bar owns health information, should be in agent + if (show_icons && gStatusBar) + { + static S32 last_health = -1; + S32 health = gStatusBar->getHealth(); + if (health != last_health) + { + std::string text = llformat("%d%%", health); + mDamageText->setText(text); + last_health = health; + } + } } void LLPanelTopInfoBar::layoutParcelIcons() { - LLRect old_rect = getRect(); + LLRect old_rect = getRect(); - // TODO: remove hard-coded values and read them as xml parameters - static const int FIRST_ICON_HPAD = 32; - static const int LAST_ICON_HPAD = 11; + // TODO: remove hard-coded values and read them as xml parameters + static const int FIRST_ICON_HPAD = 32; + static const int LAST_ICON_HPAD = 11; - S32 left = mParcelInfoText->getRect().mRight + FIRST_ICON_HPAD; + S32 left = mParcelInfoText->getRect().mRight + FIRST_ICON_HPAD; - left = layoutWidget(mDamageText, left); + left = layoutWidget(mDamageText, left); - for (int i = ICON_COUNT - 1; i >= 0; --i) - { - left = layoutWidget(mParcelIcon[i], left); - } + for (int i = ICON_COUNT - 1; i >= 0; --i) + { + left = layoutWidget(mParcelIcon[i], left); + } - LLRect rect = getRect(); - rect.set(rect.mLeft, rect.mTop, left + LAST_ICON_HPAD, rect.mBottom); - setRect(rect); + LLRect rect = getRect(); + rect.set(rect.mLeft, rect.mTop, left + LAST_ICON_HPAD, rect.mBottom); + setRect(rect); - if (old_rect != getRect()) - { - mResizeSignal(); - } + if (old_rect != getRect()) + { + mResizeSignal(); + } } S32 LLPanelTopInfoBar::layoutWidget(LLUICtrl* ctrl, S32 left) { - // TODO: remove hard-coded values and read them as xml parameters - static const int ICON_HPAD = 2; + // TODO: remove hard-coded values and read them as xml parameters + static const int ICON_HPAD = 2; - if (ctrl->getVisible()) - { - LLRect rect = ctrl->getRect(); - rect.mRight = left + rect.getWidth(); - rect.mLeft = left; + if (ctrl->getVisible()) + { + LLRect rect = ctrl->getRect(); + rect.mRight = left + rect.getWidth(); + rect.mLeft = left; - ctrl->setRect(rect); - left += rect.getWidth() + ICON_HPAD; - } + ctrl->setRect(rect); + left += rect.getWidth() + ICON_HPAD; + } - return left; + return left; } void LLPanelTopInfoBar::onParcelIconClick(EParcelIcon icon) { - switch (icon) - { - case VOICE_ICON: - LLNotificationsUtil::add("NoVoice"); - break; - case FLY_ICON: - LLNotificationsUtil::add("NoFly"); - break; - case PUSH_ICON: - LLNotificationsUtil::add("PushRestricted"); - break; - case BUILD_ICON: - LLNotificationsUtil::add("NoBuild"); - break; - case SCRIPTS_ICON: - { - LLViewerRegion* region = gAgent.getRegion(); - if(region && region->getRegionFlag(REGION_FLAGS_ESTATE_SKIP_SCRIPTS)) - { - LLNotificationsUtil::add("ScriptsStopped"); - } - else if(region && region->getRegionFlag(REGION_FLAGS_SKIP_SCRIPTS)) - { - LLNotificationsUtil::add("ScriptsNotRunning"); - } - else - { - LLNotificationsUtil::add("NoOutsideScripts"); - } - break; - } - case DAMAGE_ICON: - LLNotificationsUtil::add("NotSafe"); - break; - case SEE_AVATARS_ICON: - LLNotificationsUtil::add("SeeAvatars"); - break; - case ICON_COUNT: - break; - // no default to get compiler warning when a new icon gets added - } + switch (icon) + { + case VOICE_ICON: + LLNotificationsUtil::add("NoVoice"); + break; + case FLY_ICON: + LLNotificationsUtil::add("NoFly"); + break; + case PUSH_ICON: + LLNotificationsUtil::add("PushRestricted"); + break; + case BUILD_ICON: + LLNotificationsUtil::add("NoBuild"); + break; + case SCRIPTS_ICON: + { + LLViewerRegion* region = gAgent.getRegion(); + if(region && region->getRegionFlag(REGION_FLAGS_ESTATE_SKIP_SCRIPTS)) + { + LLNotificationsUtil::add("ScriptsStopped"); + } + else if(region && region->getRegionFlag(REGION_FLAGS_SKIP_SCRIPTS)) + { + LLNotificationsUtil::add("ScriptsNotRunning"); + } + else + { + LLNotificationsUtil::add("NoOutsideScripts"); + } + break; + } + case DAMAGE_ICON: + LLNotificationsUtil::add("NotSafe"); + break; + case SEE_AVATARS_ICON: + LLNotificationsUtil::add("SeeAvatars"); + break; + case ICON_COUNT: + break; + // no default to get compiler warning when a new icon gets added + } } void LLPanelTopInfoBar::onAgentParcelChange() { - update(); + update(); } void LLPanelTopInfoBar::onContextMenuItemClicked(const LLSD::String& item) { - if (item == "landmark") - { - LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos(); - - if(landmark == NULL) - { - LLFloaterReg::showInstance("add_landmark"); - } - else - { - LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID())); - } - } - else if (item == "copy") - { - LLSLURL slurl; - LLAgentUI::buildSLURL(slurl, false); - LLUIString location_str(slurl.getSLURLString()); - - LLClipboard::instance().copyToClipboard(location_str,0,location_str.length()); - } + if (item == "landmark") + { + LLViewerInventoryItem* landmark = LLLandmarkActions::findLandmarkForAgentPos(); + + if(landmark == NULL) + { + LLFloaterReg::showInstance("add_landmark"); + } + else + { + LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "landmark").with("id",landmark->getUUID())); + } + } + else if (item == "copy") + { + LLSLURL slurl; + LLAgentUI::buildSLURL(slurl, false); + LLUIString location_str(slurl.getSLURLString()); + + LLClipboard::instance().copyToClipboard(location_str,0,location_str.length()); + } } void LLPanelTopInfoBar::onInfoButtonClicked() { - LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent")); + LLFloaterSidePanelContainer::showPanel("places", LLSD().with("type", "agent")); } |