Command: Merging from https://svn.aws.productengine.com/secondlife/export-from-ll/viewer-2-0/indra, revision 1245 to https://svn.aws.productengine.com/secondlife/pe/stable-1/indra, revision 1246 into P:\svn\viewer-2-0\latest\indra, ignoring ancestry

* EXT-277 - Modifications to the Location Bar Context Menu
* EXT-252 - /whisper, /shout
* EXT-254 - IM chiclet counter
* EXT-267 - 'Status' drop-down menu doesn't drop in the Side tray / Me panel
* EXT-298 - Update Places Panel Spec to reflect latest Create Landmark format
* EXT-278 -  Input Field History should display human readable names
* EXT-317 - Avatar profile isn't opened in the sidetray as Profile Info panel when selecting an avatar in the search
* Changes to notification tips
* Changes to movement and camera controls
* Side Tray functionality additions and code cleanup
master
Steven Bennetts 2009-08-07 23:41:29 +00:00
parent e3d84d5e88
commit 9828faf565
14 changed files with 262 additions and 117 deletions

View File

@ -135,7 +135,6 @@ set(viewer_SOURCE_FILES
llflexibleobject.cpp
llfloaterabout.cpp
llfloateractivespeakers.cpp
llfloateraddlandmark.cpp
llfloateranimpreview.cpp
llfloaterauction.cpp
llfloateravatarpicker.cpp
@ -283,7 +282,6 @@ set(viewer_SOURCE_FILES
llpanelavatarrow.cpp
llpanelavatartag.cpp
llpanelclassified.cpp
llsidetraypanelcontainer.cpp
llpanelcontents.cpp
llpaneldirbrowser.cpp
llpaneldirclassified.cpp
@ -344,6 +342,7 @@ set(viewer_SOURCE_FILES
llscreenchannel.cpp
llselectmgr.cpp
llsidetray.cpp
llsidetraypanelcontainer.cpp
llsky.cpp
llslurl.cpp
llspatialpartition.cpp
@ -577,7 +576,6 @@ set(viewer_HEADER_FILES
llflexibleobject.h
llfloaterabout.h
llfloateractivespeakers.h
llfloateraddlandmark.h
llfloateranimpreview.h
llfloaterauction.h
llfloateravatarpicker.h
@ -724,7 +722,6 @@ set(viewer_HEADER_FILES
llpanelavatarrow.h
llpanelavatartag.h
llpanelclassified.h
llsidetraypanelcontainer.h
llpanelcontents.h
llpaneldirbrowser.h
llpaneldirclassified.h
@ -787,6 +784,7 @@ set(viewer_HEADER_FILES
llsavedsettingsglue.h
llselectmgr.h
llsidetray.h
llsidetraypanelcontainer.h
llsky.h
llslurl.h
llspatialpartition.h

View File

@ -53,6 +53,11 @@ const F32 CAMERA_BUTTON_DELAY = 0.0f;
#define PAN "cam_track_stick"
#define CONTROLS "controls"
void show_tip(LLFirstTimeTipsManager::EFirstTimeTipType tipType, LLView* anchorView)
{
LLFirstTimeTipsManager::showTipsFor(tipType, anchorView, LLFirstTimeTipsManager::TPA_POS_RIGHT_ALIGN_TOP);
}
//
// Member functions
//
@ -93,7 +98,8 @@ void LLFloaterCamera::update()
{
ECameraControlMode mode = determineMode();
if (mode != mCurrMode) setMode(mode);
LLFirstTimeTipsManager::showTipsFor(mMode2TipType[mode], this);
updatePosition();
show_tip(mMode2TipType[mode], this);
}
@ -270,7 +276,7 @@ void LLFloaterCamera::onClickBtn(ECameraControlMode mode)
switchMode(mode);
LLFirstTimeTipsManager::showTipsFor(mMode2TipType[mode], mMode2Button[mode]);
show_tip(mMode2TipType[mode], this);
}
void LLFloaterCamera::assignButton2Mode(ECameraControlMode mode, const std::string& button_name)

View File

@ -38,33 +38,58 @@
#include "llui.h"
const char LLLocationHistory::delimiter = '\t';
LLLocationHistory::LLLocationHistory() :
mFilename("typed_locations.txt")
{
}
void LLLocationHistory::addItem(std::string item)
{
void LLLocationHistory::addItem(const std::string & item, const std::string & tooltip) {
static LLUICachedControl<S32> max_items("LocationHistoryMaxSize", 100);
std::vector<std::string>::iterator item_iter = std::find(mItems.begin(), mItems.end(), item);
if (item_iter != mItems.end()) {
mItems.erase(item_iter);
// check if this item doesn't duplicate any existing one
if (touchItem(item)) {
return;
}
mItems.push_back(item);
mToolTips[item] = tooltip;
// If the vector size exceeds the maximum, purge the oldest items.
if ((S32)mItems.size() > max_items)
mItems.erase(mItems.begin(), mItems.end()-max_items);
if ((S32)mItems.size() > max_items) {
for(std::vector<std::string>::iterator i = mItems.begin(); i != mItems.end()-max_items; ++i) {
mToolTips.erase(*i);
mItems.erase(i);
}
}
}
bool LLLocationHistory::touchItem(const std::string & item) {
bool result = false;
std::vector<std::string>::iterator item_iter = std::find(mItems.begin(), mItems.end(), item);
// the last used item should be the first in the history
if (item_iter != mItems.end()) {
mItems.erase(item_iter);
mItems.push_back(item);
result = true;
}
return result;
}
void LLLocationHistory::removeItems()
{
mItems.clear();
mToolTips.clear();
}
std::string LLLocationHistory::getToolTip(const std::string & item) const {
std::map<std::string, std::string>::const_iterator i = mToolTips.find(item);
return i != mToolTips.end() ? i->second : "";
}
bool LLLocationHistory::getMatchingItems(std::string substring, location_list_t& result) const
{
@ -110,7 +135,7 @@ void LLLocationHistory::save() const
}
for (location_list_t::const_iterator it = mItems.begin(); it != mItems.end(); ++it)
file << (*it) << std::endl;
file << (*it) << delimiter << mToolTips.find(*it)->second << std::endl;
file.close();
}
@ -129,13 +154,21 @@ void LLLocationHistory::load()
return;
}
// remove current entries before we load over them
mItems.clear();
removeItems();
// add each line in the file to the list
std::string line;
while (std::getline(file, line))
addItem(line);
while (std::getline(file, line)) {
size_t dp = line.find(delimiter);
if (dp != std::string::npos) {
const std::string reg_name = line.substr(0, dp);
const std::string tooltip = line.substr(dp + 1, std::string::npos);
addItem(reg_name, tooltip);
}
}
file.close();

View File

@ -37,6 +37,7 @@
#include <vector>
#include <string>
#include <map>
#include <boost/function.hpp>
class LLLocationHistory: public LLSingleton<LLLocationHistory>
@ -50,8 +51,10 @@ public:
LLLocationHistory();
void addItem(std::string item);
void addItem(const std::string & item, const std::string & tooltip);
bool touchItem(const std::string & item);
void removeItems();
std::string getToolTip(const std::string & item) const;
size_t getItemCount() const { return mItems.size(); }
const location_list_t& getItems() const { return mItems; }
bool getMatchingItems(std::string substring, location_list_t& result) const;
@ -62,9 +65,11 @@ public:
void dump() const;
private:
std::vector<std::string> mItems;
std::string mFilename; /// File to store the history to.
loaded_signal_t mLoadedSignal;
const static char delimiter;
std::vector<std::string> mItems;
std::map<std::string, std::string> mToolTips;
std::string mFilename; /// File to store the history to.
loaded_signal_t mLoadedSignal;
};
#endif

View File

@ -234,6 +234,13 @@ BOOL LLLocationInputCtrl::handleToolTip(S32 x, S32 y, std::string& msg, LLRect*
// Let the buttons show their tooltips.
if (LLUICtrl::handleToolTip(x, y, msg, sticky_rect_screen) && !msg.empty())
{
LLLocationHistory* lh = LLLocationHistory::getInstance();
const std::string tooltip = lh->getToolTip(msg);
if (!tooltip.empty()) {
msg = tooltip;
}
return TRUE;
}
@ -347,9 +354,6 @@ void LLLocationInputCtrl::onInfoButtonClicked()
void LLLocationInputCtrl::onAddLandmarkButtonClicked()
{
LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
// Floater "Add Landmark" functionality moved to Side Tray
//LLFloaterReg::showInstance("add_landmark");
}
void LLLocationInputCtrl::onAgentParcelChange()

View File

@ -435,7 +435,7 @@ void LLFloaterMove::showQuickTips(const EMovementMode mode)
default: llwarns << "Quick Tip type was not detected, FTT_MOVE_WALK will be used" << llendl;
}
LLFirstTimeTipsManager::showTipsFor(tipType, this);
LLFirstTimeTipsManager::showTipsFor(tipType, this, LLFirstTimeTipsManager::TPA_POS_LEFT_ALIGN_TOP);
}
void LLFloaterMove::setModeButtonToggleState(const EMovementMode mode)

View File

@ -181,10 +181,14 @@ LLNavigationBar::LLNavigationBar()
mBtnHome(NULL),
mCmbLocation(NULL),
mLeSearch(NULL),
mPurgeTPHistoryItems(false)
mPurgeTPHistoryItems(false),
mUpdateTypedLocationHistory(false)
{
setIsChrome(TRUE);
mParcelMgrConnection = LLViewerParcelMgr::getInstance()->setAgentParcelChangedCallback(
boost::bind(&LLNavigationBar::onTeleportFinished, this));
// Register callbacks and load the location field context menu (NB: the order matters).
mCommitCallbackRegistrar.add("Navbar.Action", boost::bind(&LLNavigationBar::onLocationContextMenuItemClicked, this, _2));
mEnableCallbackRegistrar.add("Navbar.EnableMenuItem", boost::bind(&LLNavigationBar::onLocationContextMenuItemEnabled, this, _2));
@ -200,6 +204,7 @@ LLNavigationBar::LLNavigationBar()
LLNavigationBar::~LLNavigationBar()
{
mParcelMgrConnection.disconnect();
sInstance = 0;
}
@ -324,12 +329,12 @@ void LLNavigationBar::onLocationSelection()
std::string region_name;
LLVector3 local_coords(128, 128, 0);
S32 x = 0, y = 0, z = 0;
// Is the typed location a SLURL?
if (LLSLURL::isSLURL(typed_location))
{
// Yes. Extract region name and local coordinates from it.
S32 x = 0, y = 0, z = 0;
if (LLURLSimString::parse(LLSLURL::stripProtocol(typed_location), &region_name, &x, &y, &z))
local_coords.set(x, y, z);
else
@ -337,8 +342,13 @@ void LLNavigationBar::onLocationSelection()
}
else
{
region_name = extractLocalCoordsFromRegName(typed_location, &x, &y, &z);
if (region_name != typed_location) {
local_coords.set(x, y, z);
}
// Treat it as region name.
region_name = typed_location;
// region_name = typed_location;
}
// Resolve the region name to its global coordinates.
@ -349,6 +359,32 @@ void LLNavigationBar::onLocationSelection()
LLWorldMap::getInstance()->sendNamedRegionRequest(region_name, cb, std::string("unused"), false);
}
void LLNavigationBar::onTeleportFinished() {
if (mUpdateTypedLocationHistory) {
LLLocationHistory* lh = LLLocationHistory::getInstance();
// Location is valid. Add it to the typed locations history.
// If user has typed text this variable will contain -1.
if (mCmbLocation->getCurrentIndex() != -1) {
lh->touchItem(mCmbLocation->getSelectedItemLabel());
} else {
std::string region_name;
std::string url = gAgent.getSLURL();
S32 x = 0, y = 0, z = 0;
if (LLSLURL::isSLURL(url)) {
LLURLSimString::parse(LLSLURL::stripProtocol(url), &region_name, &x, &y, &z);
appendLocalCoordsToRegName(&region_name, x, y, z);
lh->addItem(region_name, url);
}
}
lh->save();
mUpdateTypedLocationHistory = false;
}
}
void LLNavigationBar::onTeleportHistoryChanged()
{
// Update navigation controls.
@ -415,27 +451,13 @@ void LLNavigationBar::onRegionNameResponse(
return;
}
// Location is valid. Add it to the typed locations history.
// If user has typed text this variable will contain -1.
S32 selected_item = mCmbLocation->getCurrentIndex();
/*
LLLocationHistory* lh = LLLocationHistory::getInstance();
lh->addItem(selected_item == -1 ? typed_location : mCmbLocation->getSelectedItemLabel());
lh->save();
*/
// Teleport to the location.
LLVector3d region_pos = from_region_handle(region_handle);
LLVector3d global_pos = region_pos + (LLVector3d) local_coords;
mUpdateTypedLocationHistory = true;
llinfos << "Teleporting to: " << global_pos << llendl;
gAgent.teleportViaLocation(global_pos);
LLLocationHistory* lh = LLLocationHistory::getInstance();
lh->addItem(selected_item == -1 ? typed_location : mCmbLocation->getSelectedItemLabel());
lh->save();
}
void LLNavigationBar::showTeleportHistoryMenu()
@ -474,9 +496,6 @@ void LLNavigationBar::onLocationContextMenuItemClicked(const LLSD& userdata)
else if (item == std::string("landmark"))
{
LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
// Floater "Add Landmark" functionality moved to Side Tray
//LLFloaterReg::showInstance("add_landmark");
}
else if (item == std::string("cut"))
{
@ -546,6 +565,38 @@ void LLNavigationBar::invokeSearch(std::string search_text)
LLFloaterReg::showInstance("search", LLSD().insert("panel", "all").insert("id", LLSD(search_text)));
}
void LLNavigationBar::appendLocalCoordsToRegName(std::string* reg_name, S32 x, S32 y, S32 z) {
std::string fmt = *reg_name + " (%d, %d, %d)";
*reg_name = llformat(fmt.c_str(), x, y, z);
}
std::string LLNavigationBar::extractLocalCoordsFromRegName(const std::string & reg_name, S32* x, S32* y, S32* z) {
/*
* This regular expression extracts numbers from the following string
* construct: "(num1, num2, num3)", where num1, num2 and num3 are decimal
* numbers. Leading and trailing spaces are also caught by the expression.
*/
const boost::regex re("\\s*\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)\\s*");
boost::smatch m;
if (boost::regex_search(reg_name, m, re)) {
// string representations of parsed by regex++ numbers
std::string xstr(m[1].first, m[1].second);
std::string ystr(m[2].first, m[2].second);
std::string zstr(m[3].first, m[3].second);
*x = atoi(xstr.c_str());
*y = atoi(ystr.c_str());
*z = atoi(zstr.c_str());
return boost::regex_replace(reg_name, re, "");
}
*x = *y = *z = 0;
return reg_name;
}
void LLNavigationBar::clearHistoryCache()
{
mCmbLocation->removeall();

View File

@ -68,6 +68,9 @@ private:
void showTeleportHistoryMenu();
void invokeSearch(std::string search_text);
static void appendLocalCoordsToRegName(std::string* reg_name, S32 x, S32 y, S32 z);
static std::string extractLocalCoordsFromRegName(const std::string & reg_name, S32* x, S32* y, S32* z);
// callbacks
bool onLocationContextMenuItemEnabled(const LLSD& userdata);
void onLocationContextMenuItemClicked(const LLSD& userdata);
@ -81,6 +84,7 @@ private:
void onLocationSelection();
void onLocationPrearrange(const LLSD& data);
void onSearchCommit();
void onTeleportFinished();
void onRegionNameResponse(
std::string typed_location,
std::string region_name,
@ -90,14 +94,16 @@ private:
static LLNavigationBar *sInstance;
LLMenuGL* mLocationContextMenu;
LLMenuGL* mTeleportHistoryMenu;
LLButton* mBtnBack;
LLButton* mBtnForward;
LLButton* mBtnHome;
LLSearchEditor* mLeSearch;
LLLocationInputCtrl* mCmbLocation;
bool mPurgeTPHistoryItems;
LLMenuGL* mLocationContextMenu;
LLMenuGL* mTeleportHistoryMenu;
LLButton* mBtnBack;
LLButton* mBtnForward;
LLButton* mBtnHome;
LLSearchEditor* mLeSearch;
LLLocationInputCtrl* mCmbLocation;
boost::signals2::connection mParcelMgrConnection;
bool mPurgeTPHistoryItems;
bool mUpdateTypedLocationHistory;
};
#endif

View File

@ -67,7 +67,10 @@ LLPanelPlaceInfo::LLPanelPlaceInfo()
mRequestedID(),
mPosRegion(),
mLandmarkID(),
mMinHeight(0)
mMinHeight(0),
mScrollingPanel(NULL),
mInfoPanel(NULL),
mMediaPanel(NULL)
{}
LLPanelPlaceInfo::~LLPanelPlaceInfo()
@ -110,9 +113,10 @@ BOOL LLPanelPlaceInfo::postBuild()
mMinHeight = scroll_container->getScrolledViewRect().getHeight();
mScrollingPanel = getChild<LLPanel>("scrolling_panel");
mInfoPanel = getChild<LLPanel>("info_panel", TRUE, FALSE);
mMediaPanel = getChild<LLMediaPanel>("media_panel", TRUE, FALSE);
mInfoPanel = getChild<LLPanel>("info_panel");
mMediaPanel = getChild<LLMediaPanel>("media_panel");
if (!(mMediaPanel && mInfoPanel && mScrollingPanel))
return FALSE;
return TRUE;
}
@ -240,12 +244,20 @@ void LLPanelPlaceInfo::setInfoType(INFO_TYPE type)
if (!mInfoPanel)
return;
if (type != PLACE)
toggleMediaPanel(FALSE);
bool is_landmark_info_type = type == LANDMARK;
LLPanel* landmark_info_panel = getChild<LLPanel>("landmark_info_panel");
if (landmark_info_panel)
{
landmark_info_panel->setVisible(is_landmark_info_type);
}
switch(type)
{
case CREATE_LANDMARK:
mCurrentTitle = getString("title_create_landmark");
toggleMediaPanel(FALSE);
break;
case PLACE:
@ -261,14 +273,10 @@ void LLPanelPlaceInfo::setInfoType(INFO_TYPE type)
// a landmark or a teleport history item
case LANDMARK:
mCurrentTitle = getString("title_landmark");
toggleMediaPanel(FALSE);
break;
case TELEPORT_HISTORY:
mCurrentTitle = getString("title_place");
toggleMediaPanel(FALSE);
break;
}
}
@ -383,7 +391,7 @@ void LLPanelPlaceInfo::processParcelInfo(const LLParcelData& parcel_data)
if (mCurrentTitle != getString("title_landmark"))
{
mTitleEditor->setText(parcel_data.name + "; " + name);
mTitleEditor->setText(parcel_data.name);
mNotesEditor->setText(LLStringUtil::null);
}
}
@ -499,7 +507,7 @@ void LLPanelPlaceInfo::createLandmark(const LLUUID& folder_id)
// If typed name is empty use the parcel name instead.
if (name.empty())
{
name = mParcelName->getText() + "; " + mRegionName->getText();
name = mParcelName->getText();
}
LLStringUtil::replaceChar(desc, '\n', ' ');
@ -510,7 +518,7 @@ void LLPanelPlaceInfo::createLandmark(const LLUUID& folder_id)
void LLPanelPlaceInfo::reshape(S32 width, S32 height, BOOL called_from_parent)
{
if (mMinHeight > 0)
if (mMinHeight > 0 && mScrollingPanel != NULL)
{
mScrollingPanel->reshape(mScrollingPanel->getRect().getWidth(), mMinHeight);
}

View File

@ -106,6 +106,9 @@ BOOL LLPanelPlaces::postBuild()
mOverflowBtn = getChild<LLButton>("overflow_btn");
// *TODO: Assign the action to an appropriate event.
mOverflowBtn->setClickedCallback(boost::bind(&LLPanelPlaces::toggleMediaPanel, this));
mTabContainer = getChild<LLTabContainer>("Places Tabs");
if (mTabContainer)
{
@ -118,17 +121,14 @@ BOOL LLPanelPlaces::postBuild()
mFilterEditor->setCommitCallback(boost::bind(&LLPanelPlaces::onFilterEdit, this, _2));
}
mPlaceInfo = getChild<LLPanelPlaceInfo>("panel_place_info", TRUE, FALSE);
if (mPlaceInfo)
mPlaceInfo = getChild<LLPanelPlaceInfo>("panel_place_info");
if (!mPlaceInfo)
return FALSE;
LLButton* back_btn = mPlaceInfo->getChild<LLButton>("back_btn");
if (back_btn)
{
LLButton* back_btn = mPlaceInfo->getChild<LLButton>("back_btn");
if (back_btn)
{
back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
}
// *TODO: Assign the action to an appropriate event.
mOverflowBtn->setClickedCallback(boost::bind(&LLPanelPlaces::toggleMediaPanel, this));
back_btn->setClickedCallback(boost::bind(&LLPanelPlaces::onBackButtonClicked, this));
}
return TRUE;
@ -136,7 +136,7 @@ BOOL LLPanelPlaces::postBuild()
void LLPanelPlaces::onOpen(const LLSD& key)
{
if(key.size() == 0)
if(mPlaceInfo == NULL || key.size() == 0)
return;
mPlaceInfoType = key["type"].asString();
@ -201,6 +201,9 @@ void LLPanelPlaces::onOpen(const LLSD& key)
void LLPanelPlaces::setItem(LLInventoryItem* item)
{
if (!mPlaceInfo)
return;
mItem = item;
// If the item is a link get a linked item
@ -224,6 +227,9 @@ void LLPanelPlaces::setItem(LLInventoryItem* item)
void LLPanelPlaces::onLandmarkLoaded(LLLandmark* landmark)
{
if (!mPlaceInfo)
return;
LLUUID region_id;
landmark->getRegionID(region_id);
LLVector3d pos_global;
@ -263,11 +269,6 @@ void LLPanelPlaces::onShareButtonClicked()
// TODO: Launch the "Things" Share wizard
}
void LLPanelPlaces::onAddLandmarkButtonClicked()
{
LLFloaterReg::showInstance("add_landmark");
}
void LLPanelPlaces::onCopySLURLButtonClicked()
{
mActivePanel->onCopySLURL();
@ -276,6 +277,9 @@ void LLPanelPlaces::onCopySLURLButtonClicked()
void LLPanelPlaces::onTeleportButtonClicked()
{
if (!mPlaceInfo)
return;
if (mPlaceInfo->getVisible())
{
if (mPlaceInfoType == "landmark")
@ -302,6 +306,9 @@ void LLPanelPlaces::onTeleportButtonClicked()
void LLPanelPlaces::onShowOnMapButtonClicked()
{
if (!mPlaceInfo)
return;
if (mPlaceInfo->getVisible())
{
LLFloaterWorldMap* worldmap_instance = LLFloaterWorldMap::getInstance();
@ -430,6 +437,9 @@ void LLPanelPlaces::changed(U32 mask)
void LLPanelPlaces::onAgentParcelChange()
{
if (!mPlaceInfo)
return;
if (mPlaceInfo->getVisible() && (mPlaceInfoType == "agent" || mPlaceInfoType == "create_landmark"))
{
onOpen(LLSD().insert("type", mPlaceInfoType));
@ -442,6 +452,9 @@ void LLPanelPlaces::onAgentParcelChange()
void LLPanelPlaces::updateVerbs()
{
if (!mPlaceInfo)
return;
bool is_place_info_visible = mPlaceInfo->getVisible();
bool is_agent_place_info_visible = mPlaceInfoType == "agent";
bool is_create_landmark_visible = mPlaceInfoType == "create_landmark";

View File

@ -66,7 +66,6 @@ private:
void onFilterEdit(const std::string& search_string);
void onTabSelected();
//void onAddLandmarkButtonClicked();
//void onCopySLURLButtonClicked();
//void onShareButtonClicked();
void onTeleportButtonClicked();

View File

@ -59,36 +59,55 @@ public:
LLScreenChannel();
virtual ~LLScreenChannel();
// Channel's outfit-functions
// classic reshape
void reshape(S32 width, S32 height, BOOL called_from_parent = TRUE);
LLToast* addToast(LLUUID id, LLPanel* panel, bool is_not_tip = true);
// initialization of channel's shape and position
void init(S32 channel_left, S32 channel_right);
// set allignment of toasts inside a channel
void setToastAlignment(e_notification_toast_alignment align) {mToastAlignment = align;}
// set a template for a string in the OverflowToast
void setOverflowFormatString ( std::string str) { mOverflowFormatString = str; }
// Operating with toasts
// add a toast to a channel
LLToast* addToast(LLUUID id, LLPanel* panel, bool is_not_tip = true);
// kill or modify a toast by its ID
void killToastByNotificationID(LLUUID id);
void modifyToastByNotificationID(LLUUID id, LLPanel* panel);
void setToastAlignment(e_notification_toast_alignment align) {mToastAlignment = align;}
void setControlHovering(bool control) { mControlHovering = control; }
void setHovering(bool hovering) { mIsHovering = hovering; }
void removeToastsFromChannel();
void closeUnreadToastsPanel();
// hide all toasts from screen, but not remove them from a channel
void hideToastsFromScreen();
void setStoreToasts(bool store) { mStoreToasts = store; }
void loadStoredToastsToChannel();
// removes all toasts from a channel
void removeToastsFromChannel();
// show all toasts in a channel
void showToasts();
//
void loadStoredToastsToChannel();
//
void closeUnreadToastsPanel();
S32 getNumberOfHiddenToasts() { return mHiddenToastsNum;}
void setNumberOfHiddenToasts(S32 num) { mHiddenToastsNum = num;}
// Channel's behavior-functions
// set whether a channel will control hovering inside itself or not
void setControlHovering(bool control) { mControlHovering = control; }
// set Hovering flag for a channel
void setHovering(bool hovering) { mIsHovering = hovering; }
// set whether a channel will store faded toasts or not
void setStoreToasts(bool store) { mStoreToasts = store; }
// tell all channels that the StartUp toast was shown and allow them showing of toasts
static void setStartUpToastShown() { mWasStartUpToastShown = true; }
// Channel's other interface functions functions
S32 getNumberOfHiddenToasts() { return mHiddenToastsNum;}
// TODO: split StartUp and Overflow toasts
void setNumberOfHiddenToasts(S32 num) { mHiddenToastsNum = num;}
e_notification_toast_alignment getToastAlignment() {return mToastAlignment;}
void setOverflowFormatString ( std::string str) { mOverflowFormatString = str; }
// Channel's callbacks
// callback for storing of faded toasts
typedef boost::function<void (LLPanel* info_panel, const LLUUID id)> store_tost_callback_t;
typedef boost::signals2::signal<void (LLPanel* info_panel, const LLUUID id)> store_tost_signal_t;
store_tost_signal_t mOnStoreToast;
boost::signals2::connection setOnStoreToastCallback(store_tost_callback_t cb) { return mOnStoreToast.connect(cb); }
private:
struct ToastElem
@ -117,31 +136,38 @@ private:
}
};
// Channel's handlers
void onToastHover(LLToast* toast, bool mouse_enter);
void onToastFade(LLToast* toast);
void onOverflowToastHide();
//
void storeToast(ToastElem& toast_elem);
// show-functions depending on allignment of toasts
void showToastsBottom();
void showToastsCentre();
void showToastsTop();
// create the OverflowToast
void createOverflowToast(S32 bottom, F32 timer);
void onOverflowToastHide();
// Channel's flags
static bool mWasStartUpToastShown;
bool mControlHovering;
bool mIsHovering;
bool mStoreToasts;
bool mOverflowToastHidden;
//
e_notification_toast_alignment mToastAlignment;
S32 mHiddenToastsNum;
LLToast* mUnreadToastsPanel;
std::vector<ToastElem> mToastList;
std::vector<ToastElem> mStoredToastList;
e_notification_toast_alignment mToastAlignment;
std::map<LLToast*, bool> mToastEventStack;
std::string mOverflowFormatString;
std::vector<ToastElem> mToastList;
std::vector<ToastElem> mStoredToastList;
std::map<LLToast*, bool> mToastEventStack;
};
}

View File

@ -40,7 +40,6 @@
#include "llcompilequeue.h"
#include "llfloaterabout.h"
#include "llfloateractivespeakers.h"
#include "llfloateraddlandmark.h"
#include "llfloateranimpreview.h"
#include "llfloaterauction.h"
#include "llfloateravatarpicker.h"
@ -129,7 +128,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("about_land", "floater_about_land.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterLand>);
LLFloaterReg::add("active_speakers", "floater_active_speakers.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterActiveSpeakers>);
LLFloaterReg::add("add_landmark", "floater_add_landmark.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAddLandmark>);
LLFloaterReg::add("auction", "floater_auction.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAuction>);
LLFloaterReg::add("avatar_picker", "floater_avatar_picker.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarPicker>);
LLFloaterReg::add("avatar_textures", "floater_avatar_textures.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterAvatarTextures>);

View File

@ -5280,9 +5280,7 @@ class LLWorldCreateLandmark : public view_listener_t
bool handleEvent(const LLSD& userdata)
{
LLSideTray::getInstance()->showPanel("panel_places", LLSD().insert("type", "create_landmark"));
// Floater "Add Landmark" functionality moved to Side Tray
//LLFloaterReg::showInstance("add_landmark");
return true;
}
};