185 lines
4.9 KiB
C++
185 lines
4.9 KiB
C++
/**
|
|
* @file llpaneltopinfobar.h
|
|
* @brief Coordinates and Parcel Settings information panel definition
|
|
*
|
|
* $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$
|
|
*/
|
|
|
|
#ifndef LLPANELTOPINFOBAR_H_
|
|
#define LLPANELTOPINFOBAR_H_
|
|
|
|
#include "llpanel.h"
|
|
#include "llinitdestroyclass.h"
|
|
|
|
class LLButton;
|
|
class LLTextBox;
|
|
class LLIconCtrl;
|
|
class LLParcelChangeObserver;
|
|
|
|
class LLPanelTopInfoBar : public LLPanel, public LLSingleton<LLPanelTopInfoBar>, private LLDestroyClass<LLPanelTopInfoBar>
|
|
{
|
|
LLSINGLETON(LLPanelTopInfoBar);
|
|
~LLPanelTopInfoBar();
|
|
LOG_CLASS(LLPanelTopInfoBar);
|
|
|
|
friend class LLDestroyClass<LLPanelTopInfoBar>;
|
|
|
|
public:
|
|
typedef boost::signals2::signal<void ()> resize_signal_t;
|
|
|
|
bool postBuild() override;
|
|
void draw() override;
|
|
|
|
/**
|
|
* Updates location and parcel icons on login complete
|
|
*/
|
|
void handleLoginComplete();
|
|
|
|
/**
|
|
* Called when the top info bar gets shown or hidden
|
|
*/
|
|
void onVisibilityChanged(const LLSD& show);
|
|
|
|
boost::signals2::connection setResizeCallback( const resize_signal_t::slot_type& cb );
|
|
|
|
// [RLVa:KB] - Checked: 2014-03-23 (RLVa-1.4.10)
|
|
/**
|
|
* Shorthand to call updateParcelInfoText() and updateParcelIcons().
|
|
*/
|
|
void update();
|
|
// [/RLV:KB]
|
|
private:
|
|
class LLParcelChangeObserver;
|
|
|
|
friend class LLParcelChangeObserver;
|
|
|
|
enum EParcelIcon
|
|
{
|
|
VOICE_ICON = 0,
|
|
FLY_ICON, // 1
|
|
PUSH_ICON, // 2
|
|
BUILD_ICON, // 3
|
|
SCRIPTS_ICON, // 4
|
|
DAMAGE_ICON, // 5
|
|
SEE_AVATARS_ICON, // 6
|
|
ICON_COUNT // 7 total
|
|
};
|
|
|
|
/**
|
|
* Initializes parcel icons controls. Called from the constructor.
|
|
*/
|
|
void initParcelIcons();
|
|
|
|
bool handleRightMouseDown(S32 x, S32 y, MASK mask) override;
|
|
|
|
/**
|
|
* Handles clicks on the parcel icons.
|
|
*/
|
|
void onParcelIconClick(EParcelIcon icon);
|
|
|
|
/**
|
|
* Handles clicks on the info buttons.
|
|
*/
|
|
void onInfoButtonClicked();
|
|
|
|
/**
|
|
* Called when agent changes the parcel.
|
|
*/
|
|
void onAgentParcelChange();
|
|
|
|
/**
|
|
* Called when context menu item is clicked.
|
|
*/
|
|
void onContextMenuItemClicked(const LLSD::String& userdata);
|
|
|
|
/**
|
|
* Called when user checks/unchecks Show Coordinates menu item.
|
|
*/
|
|
void onNavBarShowParcelPropertiesCtrlChanged();
|
|
|
|
// /**
|
|
// * Shorthand to call updateParcelInfoText() and updateParcelIcons().
|
|
// */
|
|
// void update();
|
|
|
|
/**
|
|
* Updates parcel info text (mParcelInfoText).
|
|
*/
|
|
void updateParcelInfoText();
|
|
|
|
/**
|
|
* Updates parcel icons (mParcelIcon[]).
|
|
*/
|
|
void updateParcelIcons();
|
|
|
|
/**
|
|
* Updates health information (mDamageText).
|
|
*/
|
|
void updateHealth();
|
|
|
|
/**
|
|
* Lays out all parcel icons starting from right edge of the mParcelInfoText + 11px
|
|
* (see screenshots in EXT-5808 for details).
|
|
*/
|
|
void layoutParcelIcons();
|
|
|
|
/**
|
|
* Lays out a widget. Widget's rect mLeft becomes equal to the 'left' argument.
|
|
*/
|
|
S32 layoutWidget(LLUICtrl* ctrl, S32 left);
|
|
|
|
/**
|
|
* Generates location string and returns it in the loc_str parameter.
|
|
*/
|
|
void buildLocationString(std::string& loc_str, bool show_coords);
|
|
|
|
/**
|
|
* Sets new value to the mParcelInfoText and updates the size of the top bar.
|
|
*/
|
|
void setParcelInfoText(const std::string& new_text);
|
|
|
|
/**
|
|
* Implementation of LLDestroyClass<T>
|
|
*/
|
|
static void destroyClass()
|
|
{
|
|
if (LLPanelTopInfoBar::instanceExists())
|
|
{
|
|
LLPanelTopInfoBar::getInstance()->setEnabled(false);
|
|
}
|
|
}
|
|
|
|
LLButton* mInfoBtn;
|
|
LLTextBox* mParcelInfoText;
|
|
LLTextBox* mDamageText;
|
|
LLIconCtrl* mParcelIcon[ICON_COUNT];
|
|
LLParcelChangeObserver* mParcelChangedObserver;
|
|
|
|
boost::signals2::connection mParcelPropsCtrlConnection;
|
|
boost::signals2::connection mShowCoordsCtrlConnection;
|
|
boost::signals2::connection mParcelMgrConnection;
|
|
|
|
resize_signal_t mResizeSignal;
|
|
};
|
|
|
|
#endif /* LLPANELTOPINFOBAR_H_ */
|