summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeth ProductEngine <slitovchuk@productengine.com>2011-09-30 15:59:38 +0300
committerSeth ProductEngine <slitovchuk@productengine.com>2011-09-30 15:59:38 +0300
commit4ac6eed116a888e113d6f4f031e57e09a141b55a (patch)
treedf6e87ff58a6008dbe1006874ba5a53af91d1871
parent66e21e0330b2f66b986a1ed76873af9752dcf2e1 (diff)
parent9d3fc5d930bd1dae07771350080e5140c0113891 (diff)
Automated merge with ssh://hg.lindenlab.com/richard/viewer-experience-fui
-rw-r--r--indra/newview/CMakeLists.txt6
-rw-r--r--indra/newview/app_settings/settings.xml11
-rw-r--r--indra/newview/llagentwearables.cpp1
-rw-r--r--indra/newview/llappearancemgr.cpp4
-rw-r--r--indra/newview/llappviewer.cpp7
-rwxr-xr-xindra/newview/llavataractions.cpp1
-rw-r--r--indra/newview/llbottomtray.cpp4
-rw-r--r--indra/newview/llchathistory.cpp5
-rw-r--r--indra/newview/llcofwearables.cpp8
-rw-r--r--indra/newview/llfavoritesbar.cpp1
-rwxr-xr-xindra/newview/llfloaterpreference.cpp8
-rw-r--r--indra/newview/llfloatersidepanelcontainer.cpp14
-rw-r--r--indra/newview/llfloatersidepanelcontainer.h6
-rw-r--r--indra/newview/llfloatersidetraytab.cpp52
-rw-r--r--indra/newview/llfloatersidetraytab.h49
-rw-r--r--indra/newview/llgroupactions.cpp16
-rw-r--r--indra/newview/llimfloater.cpp38
-rw-r--r--indra/newview/llimfloater.h4
-rw-r--r--indra/newview/llinspectobject.cpp1
-rw-r--r--indra/newview/llinventorybridge.cpp1
-rw-r--r--indra/newview/llinventoryfunctions.cpp1
-rw-r--r--indra/newview/llinventorypanel.cpp1
-rw-r--r--indra/newview/lllocationinputctrl.cpp1
-rw-r--r--indra/newview/llnavigationbar.cpp1
-rw-r--r--indra/newview/llnearbychat.cpp4
-rw-r--r--indra/newview/lloutfitslist.cpp1
-rw-r--r--indra/newview/llpanelblockedlist.cpp4
-rw-r--r--indra/newview/llpanelgroup.cpp6
-rw-r--r--indra/newview/llpanelimcontrolpanel.cpp1
-rw-r--r--indra/newview/llpanellandmarks.cpp1
-rw-r--r--indra/newview/llpanelmaininventory.cpp1
-rw-r--r--indra/newview/llpanelmarketplaceinbox.cpp8
-rw-r--r--indra/newview/llpanelmarketplaceinbox.h4
-rw-r--r--indra/newview/llpanelmarketplaceoutbox.cpp1
-rw-r--r--indra/newview/llpanelme.cpp14
-rw-r--r--indra/newview/llpanelobjectinventory.cpp1
-rw-r--r--indra/newview/llpaneloutfitsinventory.cpp1
-rw-r--r--indra/newview/llpanelpeople.cpp16
-rwxr-xr-xindra/newview/llpanelpicks.cpp7
-rw-r--r--indra/newview/llpanelplaces.cpp1
-rw-r--r--indra/newview/llpanelteleporthistory.cpp1
-rw-r--r--indra/newview/llpaneltopinfobar.cpp1
-rw-r--r--indra/newview/llpaneltopinfobar.h2
-rw-r--r--indra/newview/llpanelwearing.cpp1
-rw-r--r--indra/newview/llscreenchannel.cpp41
-rw-r--r--indra/newview/llscreenchannel.h1
-rw-r--r--indra/newview/llsidepanelappearance.cpp2
-rw-r--r--indra/newview/llsidepanelinventory.cpp5
-rw-r--r--indra/newview/llsidepanelinventory.h2
-rw-r--r--indra/newview/llsidetray.cpp1489
-rw-r--r--indra/newview/llsidetray.h260
-rw-r--r--indra/newview/llsidetraylistener.cpp179
-rw-r--r--indra/newview/llsidetraylistener.h53
-rw-r--r--indra/newview/llstartup.cpp1
-rw-r--r--indra/newview/llurldispatcher.cpp1
-rw-r--r--indra/newview/llviewerfloaterreg.cpp2
-rw-r--r--indra/newview/llviewerinventory.cpp1
-rw-r--r--indra/newview/llviewermenu.cpp45
-rw-r--r--indra/newview/llviewermessage.cpp5
-rw-r--r--indra/newview/llviewertexteditor.cpp1
-rw-r--r--indra/newview/llviewerwindow.cpp27
-rw-r--r--indra/newview/llviewerwindow.h2
-rw-r--r--indra/newview/llwearable.cpp1
-rw-r--r--indra/newview/llworldview.cpp61
-rw-r--r--indra/newview/skins/default/xui/en/floater_people.xml28
-rw-r--r--indra/newview/skins/default/xui/en/main_view.xml19
-rw-r--r--indra/newview/skins/default/xui/en/menu_login.xml8
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml2
-rw-r--r--indra/newview/skins/default/xui/en/panel_preferences_move.xml10
71 files changed, 98 insertions, 2469 deletions
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 59e1ca10e6..c488d51ba5 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -229,7 +229,6 @@ set(viewer_SOURCE_FILES
llfloatersellland.cpp
llfloatersettingsdebug.cpp
llfloatersidepanelcontainer.cpp
- llfloatersidetraytab.cpp
llfloatersnapshot.cpp
llfloatersounddevices.cpp
llfloatertelehub.cpp
@@ -442,8 +441,6 @@ set(viewer_SOURCE_FILES
llsidepanelinventorysubpanel.cpp
llsidepaneliteminfo.cpp
llsidepaneltaskinfo.cpp
- llsidetray.cpp
- llsidetraylistener.cpp
llsidetraypanelcontainer.cpp
llsky.cpp
llslurl.cpp
@@ -794,7 +791,6 @@ set(viewer_HEADER_FILES
llfloatersellland.h
llfloatersettingsdebug.h
llfloatersidepanelcontainer.h
- llfloatersidetraytab.h
llfloatersnapshot.h
llfloatersounddevices.h
llfloatertelehub.h
@@ -1002,8 +998,6 @@ set(viewer_HEADER_FILES
llsidepanelinventorysubpanel.h
llsidepaneliteminfo.h
llsidepaneltaskinfo.h
- llsidetray.h
- llsidetraylistener.h
llsidetraypanelcontainer.h
llsky.h
llslurl.h
diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 148b80e817..3d3185600b 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -9921,17 +9921,6 @@
<key>Value</key>
<integer>0</integer>
</map>
- <key>SidebarCameraMovement</key>
- <map>
- <key>Comment</key>
- <string>Reflects world rect changing while changing sidebar visibility.</string>
- <key>Persist</key>
- <integer>1</integer>
- <key>Type</key>
- <string>Boolean</string>
- <key>Value</key>
- <integer>0</integer>
- </map>
<key>GroupListShowIcons</key>
<map>
<key>Comment</key>
diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 404cd8e5b6..ccbf6bf932 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -43,7 +43,6 @@
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltooldraganddrop.h"
#include "llviewerregion.h"
diff --git a/indra/newview/llappearancemgr.cpp b/indra/newview/llappearancemgr.cpp
index c638f881a5..e5369dc2b8 100644
--- a/indra/newview/llappearancemgr.cpp
+++ b/indra/newview/llappearancemgr.cpp
@@ -44,7 +44,6 @@
#include "lloutfitslist.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerobjectlist.h"
#include "llvoavatar.h"
#include "llvoavatarself.h"
@@ -2466,7 +2465,8 @@ public:
// add may be processed after login process is finished
if (mShowPanel)
{
- LLSideTray::getInstance()->showPanel("panel_outfits_inventory", key);
+ LLFloaterSidePanelContainer::showPanel("appearance", "panel_outfits_inventory", key);
+
}
LLOutfitsList *outfits_list =
dynamic_cast<LLOutfitsList*>(LLFloaterSidePanelContainer::getPanel("appearance", "outfitslist_tab"));
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 43c8750b02..7b75bbf430 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -81,7 +81,6 @@
#include "llviewermenufile.h"
#include "llvoicechannel.h"
#include "llvoavatarself.h"
-#include "llsidetray.h"
#include "llurlmatch.h"
#include "lltextutil.h"
#include "lllogininstance.h"
@@ -3499,8 +3498,6 @@ void LLAppViewer::requestQuit()
gFloaterView->closeAllChildren(true);
}
- LLSideTray::getInstance()->notifyChildren(LLSD().with("request","quit"));
-
send_stats();
gLogoutTimer.reset();
@@ -4559,10 +4556,6 @@ void LLAppViewer::idleShutdown()
return;
}
- if (LLSideTray::getInstance()->notifyChildren(LLSD().with("request","wait_quit")))
- {
- return;
- }
diff --git a/indra/newview/llavataractions.cpp b/indra/newview/llavataractions.cpp
index fb7517a98b..b14c02a5d6 100755
--- a/indra/newview/llavataractions.cpp
+++ b/indra/newview/llavataractions.cpp
@@ -61,7 +61,6 @@
#include "llpaneloutfitedit.h"
#include "llpanelprofile.h"
#include "llrecentpeople.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewercontrol.h"
#include "llviewerobjectlist.h"
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index 55c63edd74..98712f1334 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -31,6 +31,7 @@
// library includes
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llflyoutbutton.h"
#include "lllayoutstack.h"
#include "llnotifications.h"
@@ -47,7 +48,6 @@
#include "llimfloater.h" // for LLIMFloater
#include "llnearbychatbar.h"
#include "llnearbychatbarlistener.h"
-#include "llsidetray.h"
#include "llspeakbutton.h"
#include "llsplitbutton.h"
#include "llsyswellwindow.h"
@@ -858,7 +858,7 @@ void LLBottomTray::draw()
}
getChild<LLButton>("show_profile_btn")->setToggleState(LLAvatarActions::profileVisible(gAgent.getID()));
- LLPanel* panel = LLSideTray::getInstance()->getPanel("panel_people");
+ LLPanel* panel = LLFloaterSidePanelContainer::getPanel("people", "panel_people");
if (panel && panel->isInVisibleChain())
{
getChild<LLButton>("show_people_button")->setToggleState(true);
diff --git a/indra/newview/llchathistory.cpp b/indra/newview/llchathistory.cpp
index c0c9ea1451..7a444edd43 100644
--- a/indra/newview/llchathistory.cpp
+++ b/indra/newview/llchathistory.cpp
@@ -42,6 +42,7 @@
#include "llavataractions.h"
#include "lltrans.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmutelist.h"
#include "llstylemap.h"
#include "llslurl.h"
@@ -58,8 +59,6 @@
#include "llviewercontrol.h"
-#include "llsidetray.h"//for blocked objects panel
-
static LLDefaultChildRegistry::Register<LLChatHistory> r("chat_history");
const static std::string NEW_LINE(rawstr_to_utf8("\n"));
@@ -144,7 +143,7 @@ public:
{
LLMuteList::getInstance()->add(LLMute(getAvatarId(), mFrom, LLMute::OBJECT));
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with("blocked_to_select", getAvatarId()));
}
}
diff --git a/indra/newview/llcofwearables.cpp b/indra/newview/llcofwearables.cpp
index 80e0cca780..54598f90c8 100644
--- a/indra/newview/llcofwearables.cpp
+++ b/indra/newview/llcofwearables.cpp
@@ -41,7 +41,6 @@
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llpaneloutfitedit.h"
-#include "llsidetray.h"
#include "lltrans.h"
static LLRegisterPanelClassWrapper<LLCOFWearables> t_cof_wearables("cof_wearables");
@@ -160,11 +159,6 @@ public:
protected:
static void replaceWearable(const LLUUID& item_id)
{
- // *TODO: Most probable that accessing to LLPanelOutfitEdit instance should be:
- // LLSideTray::getInstance()->getSidepanelAppearance()->getPanelOutfitEdit()
- // without casting. Getter methods provides possibility to check and construct
- // absent instance. Explicit relations between components avoids situations
- // when we tries to construct instance with unsatisfied implicit input conditions.
LLPanelOutfitEdit * panel_outfit_edit =
dynamic_cast<LLPanelOutfitEdit*> (LLFloaterSidePanelContainer::getPanel("appearance",
"panel_outfit_edit"));
@@ -236,8 +230,6 @@ protected:
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
LLUUID selected_id = mUUIDs.back();
- // *HACK* need to pass pointer to LLPanelOutfitEdit instead of LLSideTray::getInstance()->getPanel().
- // LLSideTray::getInstance()->getPanel() is rather slow variant
LLPanelOutfitEdit* panel_oe = dynamic_cast<LLPanelOutfitEdit*>(LLFloaterSidePanelContainer::getPanel("appearance", "panel_outfit_edit"));
registrar.add("BodyPart.Replace", boost::bind(&LLPanelOutfitEdit::onReplaceMenuItemClicked, panel_oe, selected_id));
registrar.add("BodyPart.Edit", boost::bind(LLAgentWearables::editWearable, selected_id));
diff --git a/indra/newview/llfavoritesbar.cpp b/indra/newview/llfavoritesbar.cpp
index 1eabf32b9f..6dcfa95a0e 100644
--- a/indra/newview/llfavoritesbar.cpp
+++ b/indra/newview/llfavoritesbar.cpp
@@ -45,7 +45,6 @@
#include "llfloaterworldmap.h"
#include "lllandmarkactions.h"
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
#include "llviewermenu.h"
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index d65928e385..47c86ae549 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -50,6 +50,7 @@
#include "llfloaterreg.h"
#include "llfloaterabout.h"
#include "llfloaterhardwaresettings.h"
+#include "llfloatersidepanelcontainer.h"
#include "llimfloater.h"
#include "llkeyboard.h"
#include "llmodaldialog.h"
@@ -66,7 +67,6 @@
#include "llscrolllistctrl.h"
#include "llscrolllistitem.h"
#include "llsliderctrl.h"
-#include "llsidetray.h"
#include "lltabcontainer.h"
#include "lltrans.h"
#include "llviewercontrol.h"
@@ -1496,11 +1496,7 @@ void LLFloaterPreference::onChangeMaturity()
// but the UI for this will still be enabled
void LLFloaterPreference::onClickBlockList()
{
- // don't create side tray on demand
- if (LLSideTray::instanceCreated())
- {
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray");
- }
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
}
void LLFloaterPreference::onDoubleClickCheckBox(LLUICtrl* ctrl)
diff --git a/indra/newview/llfloatersidepanelcontainer.cpp b/indra/newview/llfloatersidepanelcontainer.cpp
index c73ec90a12..be7a53491d 100644
--- a/indra/newview/llfloatersidepanelcontainer.cpp
+++ b/indra/newview/llfloatersidepanelcontainer.cpp
@@ -80,18 +80,28 @@ LLPanel* LLFloaterSidePanelContainer::openChildPanel(const std::string& panel_na
return panel;
}
-void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const LLSD& panel_name)
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const LLSD& key)
{
LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
if (floaterp)
{
- floaterp->openChildPanel(sMainPanelName, panel_name);
+ floaterp->openChildPanel(sMainPanelName, key);
+ }
+}
+
+void LLFloaterSidePanelContainer::showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key)
+{
+ LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+ if (floaterp)
+ {
+ floaterp->openChildPanel(panel_name, key);
}
}
LLPanel* LLFloaterSidePanelContainer::getPanel(const std::string& floater_name, const std::string& panel_name)
{
LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>(floater_name);
+
if (floaterp)
{
return floaterp->findChild<LLPanel>(panel_name, true);
diff --git a/indra/newview/llfloatersidepanelcontainer.h b/indra/newview/llfloatersidepanelcontainer.h
index b230500f56..10d85867ce 100644
--- a/indra/newview/llfloatersidepanelcontainer.h
+++ b/indra/newview/llfloatersidepanelcontainer.h
@@ -53,10 +53,12 @@ public:
LLPanel* openChildPanel(const std::string& panel_name, const LLSD& params);
- static void showPanel(const std::string& floater_name, const LLSD& panel_name);
+ static void showPanel(const std::string& floater_name, const LLSD& key);
+ static void showPanel(const std::string& floater_name, const std::string& panel_name, const LLSD& key);
+
static LLPanel* getPanel(const std::string& floater_name, const std::string& panel_name = sMainPanelName);
-
+
/**
* Gets the panel of given type T (doesn't show it or do anything else with it).
*
diff --git a/indra/newview/llfloatersidetraytab.cpp b/indra/newview/llfloatersidetraytab.cpp
deleted file mode 100644
index 9f15e62d84..0000000000
--- a/indra/newview/llfloatersidetraytab.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * @file llfloatersidetraytab.cpp
- * @brief LLFloaterSideTrayTab class 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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llfloatersidetraytab.h"
-
-// newview includes
-#include "lltransientfloatermgr.h"
-#include "llsidetray.h"
-
-LLFloaterSideTrayTab::LLFloaterSideTrayTab(const LLSD& key, const Params& params)
-: LLFloater(key, params)
-{
- // Prevent transient floaters (e.g. IM windows) from hiding
- // when this floater is clicked.
- LLTransientFloaterMgr::getInstance()->addControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-LLFloaterSideTrayTab::~LLFloaterSideTrayTab()
-{
- LLTransientFloaterMgr::getInstance()->removeControlView(LLTransientFloaterMgr::GLOBAL, this);
-}
-
-void LLFloaterSideTrayTab::onClose(bool app_quitting)
-{
- // The floater is already being closed, so don't toggle it once more (that may crash viewer).
- LLSideTray::getInstance()->setTabDocked(getName(), /* dock = */ true, /* toggle_floater = */ false);
-}
diff --git a/indra/newview/llfloatersidetraytab.h b/indra/newview/llfloatersidetraytab.h
deleted file mode 100644
index 89f2444a0e..0000000000
--- a/indra/newview/llfloatersidetraytab.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * @file llfloatersidetraytab.h
- * @brief LLFloaterSideTrayTab class 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 LL_LLFLOATERSIDETRAYTAB_H
-#define LL_LLFLOATERSIDETRAYTAB_H
-
-#include "llfloater.h"
-
-/**
- * When a side tray tab gets detached, it's wrapped in an instance of this class.
- *
- * This class helps to make sure that clicking a detached side tray tab doesn't
- * make transient floaters (e.g. IM windows) hide, so that it's possible to
- * drag an inventory item from detached My Inventory window to a docked IM window,
- * i.e. share the item (see VWR-22891).
- */
-class LLFloaterSideTrayTab : public LLFloater
-{
-public:
- LLFloaterSideTrayTab(const LLSD& key, const Params& params = getDefaultParams());
- ~LLFloaterSideTrayTab();
-
- void onClose(bool app_quitting);
-};
-
-#endif // LL_LLFLOATERSIDETRAYTAB_H
diff --git a/indra/newview/llgroupactions.cpp b/indra/newview/llgroupactions.cpp
index 97fa551441..623ebb76f2 100644
--- a/indra/newview/llgroupactions.cpp
+++ b/indra/newview/llgroupactions.cpp
@@ -34,10 +34,10 @@
#include "llagent.h"
#include "llcommandhandler.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llgroupmgr.h"
#include "llimview.h" // for gIMMgr
#include "llnotificationsutil.h"
-#include "llsidetray.h"
#include "llstatusbar.h" // can_afford_transaction()
#include "llimfloater.h"
#include "groupchatlistener.h"
@@ -83,7 +83,7 @@ public:
{
LLSD params;
params["people_panel_tab_name"] = "groups_panel";
- LLSideTray::getInstance()->showPanel("panel_people", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", params);
return true;
}
return false;
@@ -243,7 +243,7 @@ static bool isGroupUIVisible()
{
static LLPanel* panel = 0;
if(!panel)
- panel = LLSideTray::getInstance()->getPanel("panel_group_info_sidetray");
+ panel = LLFloaterSidePanelContainer::getPanel("people", "panel_group_info_sidetray");
if(!panel)
return false;
return panel->isInVisibleChain();
@@ -265,7 +265,7 @@ void LLGroupActions::show(const LLUUID& group_id)
params["group_id"] = group_id;
params["open_tab_name"] = "panel_group_info_sidetray";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
void LLGroupActions::refresh_notices()
@@ -278,7 +278,7 @@ void LLGroupActions::refresh_notices()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh_notices";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -292,7 +292,7 @@ void LLGroupActions::refresh(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "refresh";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -303,7 +303,7 @@ void LLGroupActions::createGroup()
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "create";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
//static
@@ -317,7 +317,7 @@ void LLGroupActions::closeGroup(const LLUUID& group_id)
params["open_tab_name"] = "panel_group_info_sidetray";
params["action"] = "close";
- LLSideTray::getInstance()->showPanel("panel_group_info_sidetray", params);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_group_info_sidetray", params);
}
diff --git a/indra/newview/llimfloater.cpp b/indra/newview/llimfloater.cpp
index 50a9c56518..14d85246e9 100644
--- a/indra/newview/llimfloater.cpp
+++ b/indra/newview/llimfloater.cpp
@@ -55,15 +55,9 @@
#include "llinventorymodel.h"
#include "llrootview.h"
#include "llspeakers.h"
-#include "llsidetray.h"
#include "llviewerchat.h"
-static const S32 RECT_PADDING_NOT_INIT = -1;
-static const S32 RECT_PADDING_NEED_RECALC = -2;
-
-S32 LLIMFloater::sAllowedRectRightPadding = RECT_PADDING_NOT_INIT;
-
LLIMFloater::LLIMFloater(const LLUUID& session_id)
: LLTransientDockableFloater(NULL, true, session_id),
mControlPanel(NULL),
@@ -472,41 +466,9 @@ LLIMFloater* LLIMFloater::show(const LLUUID& session_id)
return floater;
}
-//static
-bool LLIMFloater::resetAllowedRectPadding()
-{
- //reset allowed rect right padding if "SidebarCameraMovement" option
- //or sidebar state changed
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC ;
- return true;
-}
-
void LLIMFloater::getAllowedRect(LLRect& rect)
{
- if (sAllowedRectRightPadding == RECT_PADDING_NOT_INIT) //wasn't initialized
- {
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLIMFloater::resetAllowedRectPadding));
-
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLIMFloater::resetAllowedRectPadding));
- sAllowedRectRightPadding = RECT_PADDING_NEED_RECALC;
- }
-
rect = gViewerWindow->getWorldViewRectScaled();
- if (sAllowedRectRightPadding == RECT_PADDING_NEED_RECALC) //recalc allowed rect right padding
- {
- LLPanel* side_bar_tabs =
- gViewerWindow->getRootView()->getChild<LLPanel> (
- "side_bar_tabs");
- sAllowedRectRightPadding = side_bar_tabs->getRect().getWidth();
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
-
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- sAllowedRectRightPadding += LLSideTray::getInstance()->getVisibleWidth();
- }
- }
- rect.mRight -= sAllowedRectRightPadding;
}
void LLIMFloater::setDocked(bool docked, bool pop_on_undock)
diff --git a/indra/newview/llimfloater.h b/indra/newview/llimfloater.h
index 5158f6c1f7..8a3020ea10 100644
--- a/indra/newview/llimfloater.h
+++ b/indra/newview/llimfloater.h
@@ -156,10 +156,6 @@ private:
static void closeHiddenIMToasts();
- static bool resetAllowedRectPadding();
- //need to keep this static for performance issues
- static S32 sAllowedRectRightPadding;
-
static void confirmLeaveCallCallback(const LLSD& notification, const LLSD& response);
LLPanelChatControlPanel* mControlPanel;
diff --git a/indra/newview/llinspectobject.cpp b/indra/newview/llinspectobject.cpp
index 29d7a4a6b0..026c8a0923 100644
--- a/indra/newview/llinspectobject.cpp
+++ b/indra/newview/llinspectobject.cpp
@@ -46,7 +46,6 @@
#include "llmenubutton.h"
#include "llresmgr.h" // getMonetaryString
#include "llsafehandle.h"
-#include "llsidetray.h"
#include "lltextbox.h" // for description truncation
#include "lltoggleablemenu.h"
#include "lltrans.h"
diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp
index b6041c7f31..2066cbc6b2 100644
--- a/indra/newview/llinventorybridge.cpp
+++ b/indra/newview/llinventorybridge.cpp
@@ -60,7 +60,6 @@
#include "llpreviewtexture.h"
#include "llselectmgr.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltrans.h"
#include "llviewerassettype.h"
#include "llviewerfoldertype.h"
diff --git a/indra/newview/llinventoryfunctions.cpp b/indra/newview/llinventoryfunctions.cpp
index acec02b507..21a026bcf7 100644
--- a/indra/newview/llinventoryfunctions.cpp
+++ b/indra/newview/llinventoryfunctions.cpp
@@ -71,7 +71,6 @@
#include "llscrollbar.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llsidepanelinventory.h"
#include "lltabcontainer.h"
#include "lltooldraganddrop.h"
diff --git a/indra/newview/llinventorypanel.cpp b/indra/newview/llinventorypanel.cpp
index 27db28367c..b0f9cb28e6 100644
--- a/indra/newview/llinventorypanel.cpp
+++ b/indra/newview/llinventorypanel.cpp
@@ -43,7 +43,6 @@
#include "llinventoryfunctions.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "llviewerattachmenu.h"
#include "llviewerfoldertype.h"
#include "llvoavatarself.h"
diff --git a/indra/newview/lllocationinputctrl.cpp b/indra/newview/lllocationinputctrl.cpp
index f519ad759e..025181ead5 100644
--- a/indra/newview/lllocationinputctrl.cpp
+++ b/indra/newview/lllocationinputctrl.cpp
@@ -49,7 +49,6 @@
#include "lllandmarkactions.h"
#include "lllandmarklist.h"
#include "llteleporthistory.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h" // getHealth()
#include "lltrans.h"
diff --git a/indra/newview/llnavigationbar.cpp b/indra/newview/llnavigationbar.cpp
index 4c0823874c..fc264db5af 100644
--- a/indra/newview/llnavigationbar.cpp
+++ b/indra/newview/llnavigationbar.cpp
@@ -45,7 +45,6 @@
#include "llpaneltopinfobar.h"
#include "llteleporthistory.h"
#include "llsearchcombobox.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llurlregistry.h"
#include "llurldispatcher.h"
diff --git a/indra/newview/llnearbychat.cpp b/indra/newview/llnearbychat.cpp
index 07e94f957a..9eaa64a124 100644
--- a/indra/newview/llnearbychat.cpp
+++ b/indra/newview/llnearbychat.cpp
@@ -32,7 +32,7 @@
#include "llrootview.h"
//#include "llchatitemscontainerctrl.h"
#include "lliconctrl.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfocusmgr.h"
#include "llresizebar.h"
#include "llresizehandle.h"
@@ -163,7 +163,7 @@ void LLNearbyChat::onNearbySpeakers()
{
LLSD param;
param["people_panel_tab_name"] = "nearby_panel";
- LLSideTray::getInstance()->showPanel("panel_people",param);
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param);
}
diff --git a/indra/newview/lloutfitslist.cpp b/indra/newview/lloutfitslist.cpp
index c2739867b1..1dc4d796ab 100644
--- a/indra/newview/lloutfitslist.cpp
+++ b/indra/newview/lloutfitslist.cpp
@@ -42,7 +42,6 @@
#include "llmenubutton.h"
#include "llnotificationsutil.h"
#include "lloutfitobserver.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "lltransutil.h"
#include "llviewermenu.h"
diff --git a/indra/newview/llpanelblockedlist.cpp b/indra/newview/llpanelblockedlist.cpp
index 81e199d85b..5c85ec438c 100644
--- a/indra/newview/llpanelblockedlist.cpp
+++ b/indra/newview/llpanelblockedlist.cpp
@@ -37,7 +37,7 @@
// project include
#include "llfloateravatarpicker.h"
-#include "llsidetray.h"
+#include "llfloatersidepanelcontainer.h"
#include "llsidetraypanelcontainer.h"
static LLRegisterPanelClassWrapper<LLPanelBlockedList> t_panel_blocked_list("panel_block_list_sidetray");
@@ -99,7 +99,7 @@ void LLPanelBlockedList::selectBlocked(const LLUUID& mute_id)
void LLPanelBlockedList::showPanelAndSelect(const LLUUID& idToSelect)
{
- LLSideTray::getInstance()->showPanel("panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD().with(BLOCKED_PARAM_NAME, idToSelect));
}
diff --git a/indra/newview/llpanelgroup.cpp b/indra/newview/llpanelgroup.cpp
index 76b85d5bec..ae217958f0 100644
--- a/indra/newview/llpanelgroup.cpp
+++ b/indra/newview/llpanelgroup.cpp
@@ -29,6 +29,7 @@
// Library includes
#include "llbutton.h"
+#include "llfloatersidepanelcontainer.h"
#include "lltabcontainer.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
@@ -49,7 +50,6 @@
#include "llpanelgroupnotices.h"
#include "llpanelgroupgeneral.h"
-#include "llsidetray.h"
#include "llaccordionctrltab.h"
#include "llaccordionctrl.h"
@@ -597,7 +597,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
//static
void LLPanelGroup::refreshCreatedGroup(const LLUUID& group_id)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
if(!panel)
return;
panel->setGroupID(group_id);
@@ -612,7 +612,7 @@ void LLPanelGroup::showNotice(const std::string& subject,
const std::string& inventory_name,
LLOfferInfo* inventory_offer)
{
- LLPanelGroup* panel = LLSideTray::getInstance()->getPanel<LLPanelGroup>("panel_group_info_sidetray");
+ LLPanelGroup* panel = LLFloaterSidePanelContainer::getPanel<LLPanelGroup>("people", "panel_group_info_sidetray");
if(!panel)
return;
diff --git a/indra/newview/llpanelimcontrolpanel.cpp b/indra/newview/llpanelimcontrolpanel.cpp
index e370f2f622..0295ad151f 100644
--- a/indra/newview/llpanelimcontrolpanel.cpp
+++ b/indra/newview/llpanelimcontrolpanel.cpp
@@ -40,7 +40,6 @@
#include "llparticipantlist.h"
#include "llimview.h"
#include "llvoicechannel.h"
-#include "llsidetray.h"
#include "llspeakers.h"
#include "lltrans.h"
diff --git a/indra/newview/llpanellandmarks.cpp b/indra/newview/llpanellandmarks.cpp
index 1b9eb4813b..a65631b8d8 100644
--- a/indra/newview/llpanellandmarks.cpp
+++ b/indra/newview/llpanellandmarks.cpp
@@ -52,7 +52,6 @@
#include "llmenubutton.h"
#include "llplacesinventorybridge.h"
#include "llplacesinventorypanel.h"
-#include "llsidetray.h"
#include "lltoggleablemenu.h"
#include "llviewermenu.h"
#include "llviewerregion.h"
diff --git a/indra/newview/llpanelmaininventory.cpp b/indra/newview/llpanelmaininventory.cpp
index c1341af2ef..6562b259c3 100644
--- a/indra/newview/llpanelmaininventory.cpp
+++ b/indra/newview/llpanelmaininventory.cpp
@@ -52,7 +52,6 @@
#include "llviewermenu.h"
#include "llviewertexturelist.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
const std::string FILTERS_FILENAME("filters.xml");
diff --git a/indra/newview/llpanelmarketplaceinbox.cpp b/indra/newview/llpanelmarketplaceinbox.cpp
index a336472fc0..d1aea51a09 100644
--- a/indra/newview/llpanelmarketplaceinbox.cpp
+++ b/indra/newview/llpanelmarketplaceinbox.cpp
@@ -59,8 +59,6 @@ LLPanelMarketplaceInbox::~LLPanelMarketplaceInbox()
// virtual
BOOL LLPanelMarketplaceInbox::postBuild()
{
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLPanelMarketplaceInbox::handleLoginComplete, this));
-
LLFocusableElement::setFocusReceivedCallback(boost::bind(&LLPanelMarketplaceInbox::onFocusReceived, this));
return TRUE;
@@ -74,12 +72,6 @@ void LLPanelMarketplaceInbox::onSelectionChange()
}
-void LLPanelMarketplaceInbox::handleLoginComplete()
-{
- // Set us up as the class to drive the badge value for the sidebar_inventory button
- LLSideTray::getInstance()->setTabButtonBadgeDriver("sidebar_inventory", this);
-}
-
LLInventoryPanel * LLPanelMarketplaceInbox::setupInventoryPanel()
{
LLView * inbox_inventory_placeholder = getChild<LLView>("inbox_inventory_placeholder");
diff --git a/indra/newview/llpanelmarketplaceinbox.h b/indra/newview/llpanelmarketplaceinbox.h
index 705a095cf0..3531518e51 100644
--- a/indra/newview/llpanelmarketplaceinbox.h
+++ b/indra/newview/llpanelmarketplaceinbox.h
@@ -28,11 +28,10 @@
#define LL_LLPANELMARKETPLACEINBOX_H
#include "llpanel.h"
-#include "llsidetray.h"
class LLInventoryPanel;
-class LLPanelMarketplaceInbox : public LLPanel, public LLSideTrayTabBadgeDriver
+class LLPanelMarketplaceInbox : public LLPanel
{
public:
@@ -61,7 +60,6 @@ public:
std::string getBadgeString() const;
private:
- void handleLoginComplete();
void onSelectionChange();
diff --git a/indra/newview/llpanelmarketplaceoutbox.cpp b/indra/newview/llpanelmarketplaceoutbox.cpp
index c0de5deb0a..d4f9654e6e 100644
--- a/indra/newview/llpanelmarketplaceoutbox.cpp
+++ b/indra/newview/llpanelmarketplaceoutbox.cpp
@@ -40,7 +40,6 @@
#include "llpanelmarketplaceinbox.h"
#include "llsdutil.h"
#include "llsidepanelinventory.h"
-#include "llsidetray.h"
#include "lltimer.h"
#include "llviewernetwork.h"
#include "llagent.h"
diff --git a/indra/newview/llpanelme.cpp b/indra/newview/llpanelme.cpp
index 4d86fa15df..0b687009bf 100644
--- a/indra/newview/llpanelme.cpp
+++ b/indra/newview/llpanelme.cpp
@@ -72,20 +72,6 @@ BOOL LLPanelMe::postBuild()
void LLPanelMe::onOpen(const LLSD& key)
{
LLPanelProfile::onOpen(key);
-
- // Removed this action as per SOCIAL-431 The first time a new resident opens the profile tab
- // in the sidebar, they see the old profile editing panel
- //
- //// Force Edit My Profile if this is the first time when user is opening Me Panel (EXT-5068)
- //bool opened = gSavedSettings.getBOOL("MePanelOpened");
- //// In some cases Side Tray my call onOpen() twice, check getCollapsed() to be sure this
- //// is the last time onOpen() is called
- //if( !opened && !LLSideTray::getInstance()->getCollapsed() )
- //{
- // buildEditPanel();
- // openPanel(mEditPanel, getAvatarId());
- // gSavedSettings.setBOOL("MePanelOpened", true);
- //}
}
void LLPanelMe::buildEditPanel()
diff --git a/indra/newview/llpanelobjectinventory.cpp b/indra/newview/llpanelobjectinventory.cpp
index 44364b5831..98ea680504 100644
--- a/indra/newview/llpanelobjectinventory.cpp
+++ b/indra/newview/llpanelobjectinventory.cpp
@@ -57,7 +57,6 @@
#include "llpreviewtexture.h"
#include "llscrollcontainer.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltooldraganddrop.h"
#include "lltrans.h"
diff --git a/indra/newview/llpaneloutfitsinventory.cpp b/indra/newview/llpaneloutfitsinventory.cpp
index 3ac0d6616b..f90236f6f2 100644
--- a/indra/newview/llpaneloutfitsinventory.cpp
+++ b/indra/newview/llpaneloutfitsinventory.cpp
@@ -41,7 +41,6 @@
#include "llpanelwearing.h"
#include "llsaveoutfitcombobtn.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "llviewerfoldertype.h"
static const std::string OUTFITS_TAB_NAME = "outfitslist_tab";
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 177aa4f5c8..80c431f481 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -29,6 +29,7 @@
// libs
#include "llavatarname.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llmenubutton.h"
#include "llmenugl.h"
#include "llnotificationsutil.h"
@@ -56,7 +57,6 @@
#include "llinventoryobserver.h"
#include "llnetmap.h"
#include "llpanelpeoplemenus.h"
-#include "llsidetray.h"
#include "llsidetraypanelcontainer.h"
#include "llrecentpeople.h"
#include "llviewercontrol.h" // for gSavedSettings
@@ -1283,6 +1283,10 @@ void LLPanelPeople::onFriendsViewSortMenuItemClicked(const LLSD& userdata)
mAllFriendList->showPermissions(show_permissions);
mOnlineFriendList->showPermissions(show_permissions);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
void LLPanelPeople::onGroupsViewSortMenuItemClicked(const LLSD& userdata)
@@ -1315,6 +1319,10 @@ void LLPanelPeople::onNearbyViewSortMenuItemClicked(const LLSD& userdata)
{
setSortOrder(mNearbyList, E_SORT_BY_DISTANCE);
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onNearbyViewSortMenuItemCheck(const LLSD& userdata)
@@ -1348,6 +1356,10 @@ void LLPanelPeople::onRecentViewSortMenuItemClicked(const LLSD& userdata)
{
mRecentList->toggleIcons();
}
+ else if (chosen_item == "panel_block_list_sidetray")
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_block_list_sidetray", LLSD());
+ }
}
bool LLPanelPeople::onFriendsViewSortMenuItemCheck(const LLSD& userdata)
@@ -1439,7 +1451,7 @@ bool LLPanelPeople::notifyChildren(const LLSD& info)
container->onOpen(LLSD().with(LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME, getName()));
}
else
- LLSideTray::getInstance()->collapseSideBar();
+ LLFloaterReg::hideFloaterInstance("people");
return true; // this notification is only supposed to be handled by task panels
}
diff --git a/indra/newview/llpanelpicks.cpp b/indra/newview/llpanelpicks.cpp
index 15b5fc8301..72c6be4c79 100755
--- a/indra/newview/llpanelpicks.cpp
+++ b/indra/newview/llpanelpicks.cpp
@@ -35,6 +35,7 @@
#include "lldispatcher.h"
#include "llflatlistview.h"
#include "llfloaterreg.h"
+#include "llfloatersidepanelcontainer.h"
#include "llfloaterworldmap.h"
#include "llnotificationsutil.h"
#include "lltexturectrl.h"
@@ -269,11 +270,7 @@ public:
params["classified_name"] = c_info->name;
params["classified_desc"] = c_info->description;
params["from_search"] = true;
- LLFloaterSidePanelContainer* floaterp = LLFloaterReg::getTypedInstance<LLFloaterSidePanelContainer>("people");
- if (floaterp)
- {
- floaterp->openChildPanel("panel_profile_view", params);
- }
+ LLFloaterSidePanelContainer::showPanel("people", "panel_profile_view", params);
}
else if (mRequestVerb == "edit")
{
diff --git a/indra/newview/llpanelplaces.cpp b/indra/newview/llpanelplaces.cpp
index 0129ac753a..7f8f9b29af 100644
--- a/indra/newview/llpanelplaces.cpp
+++ b/indra/newview/llpanelplaces.cpp
@@ -65,7 +65,6 @@
#include "llpanelplaceprofile.h"
#include "llpanelteleporthistory.h"
#include "llremoteparcelrequest.h"
-#include "llsidetray.h"
#include "llteleporthistorystorage.h"
#include "lltoggleablemenu.h"
#include "llviewerinventory.h"
diff --git a/indra/newview/llpanelteleporthistory.cpp b/indra/newview/llpanelteleporthistory.cpp
index 52dd70f005..79171dbcb9 100644
--- a/indra/newview/llpanelteleporthistory.cpp
+++ b/indra/newview/llpanelteleporthistory.cpp
@@ -31,7 +31,6 @@
#include "llfloaterworldmap.h"
#include "llpanelteleporthistory.h"
-#include "llsidetray.h"
#include "llworldmap.h"
#include "llteleporthistorystorage.h"
#include "lltextutil.h"
diff --git a/indra/newview/llpaneltopinfobar.cpp b/indra/newview/llpaneltopinfobar.cpp
index b6e32dba78..5ed23d2f42 100644
--- a/indra/newview/llpaneltopinfobar.cpp
+++ b/indra/newview/llpaneltopinfobar.cpp
@@ -36,7 +36,6 @@
#include "lllocationinputctrl.h"
#include "llnotificationsutil.h"
#include "llparcel.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstatusbar.h"
#include "lltrans.h"
diff --git a/indra/newview/llpaneltopinfobar.h b/indra/newview/llpaneltopinfobar.h
index 583e91d15e..e934b522be 100644
--- a/indra/newview/llpaneltopinfobar.h
+++ b/indra/newview/llpaneltopinfobar.h
@@ -148,7 +148,7 @@ private:
void setParcelInfoText(const std::string& new_text);
/**
- * Implementation of LLDestroyClass<LLSideTray>
+ * Implementation of LLDestroyClass<T>
*/
static void destroyClass()
{
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index 87e9bb7b28..e2801c09bd 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -36,7 +36,6 @@
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llmenubutton.h"
-#include "llsidetray.h"
#include "llviewermenu.h"
#include "llwearableitemslist.h"
#include "llsdserialize.h"
diff --git a/indra/newview/llscreenchannel.cpp b/indra/newview/llscreenchannel.cpp
index e3bc67a414..a3b0574bca 100644
--- a/indra/newview/llscreenchannel.cpp
+++ b/indra/newview/llscreenchannel.cpp
@@ -41,7 +41,6 @@
#include "llsyswellwindow.h"
#include "llimfloater.h"
#include "llscriptfloater.h"
-#include "llsidetray.h"
#include <algorithm>
@@ -83,25 +82,8 @@ bool LLScreenChannelBase::isHovering()
return mHoveredToast->isHovered();
}
-void LLScreenChannelBase::resetPositionAndSize()
-{
- LLRect rc = gViewerWindow->getWorldViewRectScaled();
- updatePositionAndSize(rc, rc);
-}
-
void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
- {
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
- }
-
-
S32 top_delta = old_world_rect.mTop - new_world_rect.mTop;
LLRect this_rect = getRect();
@@ -111,10 +93,10 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
case CA_LEFT :
break;
case CA_CENTRE :
- this_rect.setCenterAndSize( (new_world_rect.getWidth() - world_rect_padding) / 2, new_world_rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
+ this_rect.setCenterAndSize( (new_world_rect.getWidth()) / 2, new_world_rect.getHeight() / 2, this_rect.getWidth(), this_rect.getHeight());
break;
case CA_RIGHT :
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(new_world_rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
@@ -126,12 +108,6 @@ void LLScreenChannelBase::updatePositionAndSize(LLRect old_world_rect, LLRect ne
void LLScreenChannelBase::init(S32 channel_left, S32 channel_right)
{
- if(LLSideTray::instanceCreated())
- {
- LLSideTray* side_bar = LLSideTray::getInstance();
- side_bar->setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, this));
- }
-
// top and bottom set by updateBottom()
setRect(LLRect(channel_left, 0, channel_right, 0));
updateBottom();
@@ -203,17 +179,6 @@ std::list<LLToast*> LLScreenChannel::findToasts(const Matcher& matcher)
//--------------------------------------------------------------------------
void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect)
{
- /*
- take sidetray into account - screenchannel should not overlap sidetray
- */
- S32 world_rect_padding = 0;
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE
- && LLSideTray::instanceCreated ())
- {
- world_rect_padding += LLSideTray::getInstance()->getVisibleWidth();
- }
-
-
LLRect this_rect = getRect();
switch(mChannelAlignment)
@@ -226,7 +191,7 @@ void LLScreenChannel::updatePositionAndSize(LLRect old_world_rect, LLRect new_wo
return;
case CA_RIGHT :
this_rect.mTop = (S32) (new_world_rect.getHeight() * getHeightRatio());
- this_rect.setLeftTopAndSize(new_world_rect.mRight - world_rect_padding - this_rect.getWidth(),
+ this_rect.setLeftTopAndSize(new_world_rect.mRight - this_rect.getWidth(),
this_rect.mTop,
this_rect.getWidth(),
this_rect.getHeight());
diff --git a/indra/newview/llscreenchannel.h b/indra/newview/llscreenchannel.h
index d207d13981..8f11c82673 100644
--- a/indra/newview/llscreenchannel.h
+++ b/indra/newview/llscreenchannel.h
@@ -59,7 +59,6 @@ public:
// Channel's outfit-functions
// update channel's size and position in the World View
virtual void updatePositionAndSize(LLRect old_world_rect, LLRect new_world_rect);
- void resetPositionAndSize();
// initialization of channel's shape and position
virtual void init(S32 channel_left, S32 channel_right);
diff --git a/indra/newview/llsidepanelappearance.cpp b/indra/newview/llsidepanelappearance.cpp
index a356013830..853656905c 100644
--- a/indra/newview/llsidepanelappearance.cpp
+++ b/indra/newview/llsidepanelappearance.cpp
@@ -42,7 +42,6 @@
#include "lloutfitobserver.h"
#include "llpaneleditwearable.h"
#include "llpaneloutfitsinventory.h"
-#include "llsidetray.h"
#include "lltextbox.h"
#include "lluictrlfactory.h"
#include "llviewercontrol.h"
@@ -164,7 +163,6 @@ void LLSidepanelAppearance::onOpen(const LLSD& key)
else
{
// Switch to the requested panel.
- // *TODO: replace this crap with LLSideTrayPanelContainer
std::string type = key["type"].asString();
if (type == "my_outfits")
{
diff --git a/indra/newview/llsidepanelinventory.cpp b/indra/newview/llsidepanelinventory.cpp
index 0226896f54..f9dc70ccc0 100644
--- a/indra/newview/llsidepanelinventory.cpp
+++ b/indra/newview/llsidepanelinventory.cpp
@@ -282,19 +282,20 @@ BOOL LLSidepanelInventory::postBuild()
enableOutbox(gSavedSettings.getBOOL("InventoryDisplayOutbox"));
// Trigger callback for after login so we can setup to track inbox and outbox changes after initial inventory load
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::handleLoginComplete, this));
+ LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSidepanelInventory::updateInboxOutbox, this));
}
gSavedSettings.getControl("InventoryDisplayInbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayInboxChanged));
gSavedSettings.getControl("InventoryDisplayOutbox")->getCommitSignal()->connect(boost::bind(&handleInventoryDisplayOutboxChanged));
+ updateInboxOutbox();
// Update the verbs buttons state.
updateVerbs();
return TRUE;
}
-void LLSidepanelInventory::handleLoginComplete()
+void LLSidepanelInventory::updateInboxOutbox()
{
//
// Track inbox and outbox folder changes
diff --git a/indra/newview/llsidepanelinventory.h b/indra/newview/llsidepanelinventory.h
index b7d11f7f9b..4e34926a4b 100644
--- a/indra/newview/llsidepanelinventory.h
+++ b/indra/newview/llsidepanelinventory.h
@@ -47,7 +47,7 @@ public:
virtual ~LLSidepanelInventory();
private:
- void handleLoginComplete();
+ void updateInboxOutbox();
public:
void observeInboxOutboxCreation();
diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
deleted file mode 100644
index 55d6378ad8..0000000000
--- a/indra/newview/llsidetray.cpp
+++ /dev/null
@@ -1,1489 +0,0 @@
-/**
- * @file llsidetray.cpp
- * @brief SideBar implementation
- *
- * $LicenseInfo:firstyear=2009&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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "lltextbox.h"
-
-#include "llagentcamera.h"
-#include "llappviewer.h"
-#include "llbadge.h"
-#include "llbottomtray.h"
-#include "llfloaterreg.h"
-#include "llfirstuse.h"
-#include "llhints.h"
-#include "llsidetray.h"
-#include "llviewerwindow.h"
-#include "llaccordionctrl.h"
-#include "llfocusmgr.h"
-#include "llrootview.h"
-#include "llnavigationbar.h"
-#include "llpanelmarketplaceinbox.h"
-
-#include "llaccordionctrltab.h"
-
-#include "llfloater.h" //for gFloaterView
-#include "lliconctrl.h"//for OpenClose tab icon
-#include "llsidetraypanelcontainer.h"
-#include "llscreenchannel.h"
-#include "llchannelmanager.h"
-#include "llwindow.h"//for SetCursor
-#include "lltransientfloatermgr.h"
-
-#include "llsidepanelappearance.h"
-
-#include "llsidetraylistener.h"
-
-//#include "llscrollcontainer.h"
-
-using namespace std;
-using namespace LLNotificationsUI;
-
-class LLSideTrayButton;
-
-static LLRootViewRegistry::Register<LLSideTray> t1("side_tray");
-static LLDefaultChildRegistry::Register<LLSideTrayTab> t2("sidetray_tab");
-
-static const S32 BOTTOM_BAR_PAD = 5;
-
-static const std::string COLLAPSED_NAME = "<<";
-static const std::string EXPANDED_NAME = ">>";
-
-static const std::string TAB_PANEL_CAPTION_NAME = "sidetray_tab_panel";
-static const std::string TAB_PANEL_CAPTION_TITLE_BOX = "sidetray_tab_title";
-
-LLSideTray* LLSideTray::sInstance = 0;
-
-static LLSideTrayListener sSideTrayListener(LLSideTray::getInstance);
-
-// static
-LLSideTray* LLSideTray::getInstance()
-{
- if (!sInstance)
- {
- sInstance = LLUICtrlFactory::createFromFile<LLSideTray>("panel_side_tray.xml",NULL, LLRootView::child_registry_t::instance());
- sInstance->setXMLFilename("panel_side_tray.xml");
- }
-
- return sInstance;
-}
-
-// static
-bool LLSideTray::instanceCreated ()
-{
- return sInstance!=0;
-}
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayTab
-// Represents a single tab in the side tray, only used by LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayTab: public LLPanel
-{
- LOG_CLASS(LLSideTrayTab);
- friend class LLUICtrlFactory;
- friend class LLSideTray;
-public:
-
- struct Params
- : public LLInitParam::Block<Params, LLPanel::Params>
- {
- // image name
- Optional<std::string> image;
- Optional<std::string> image_selected;
- Optional<std::string> tab_title;
- Optional<std::string> description;
- Optional<LLBadge::Params> badge;
-
- Params()
- : image("image"),
- image_selected("image_selected"),
- tab_title("tab_title","no title"),
- description("description","no description"),
- badge("badge")
- {};
- };
-protected:
- LLSideTrayTab(const Params& params);
-
- void dock(LLFloater* floater_tab);
- void undock(LLFloater* floater_tab);
-
- LLSideTray* getSideTray();
-
-public:
- virtual ~LLSideTrayTab();
-
- /*virtual*/ BOOL postBuild ();
- /*virtual*/ bool addChild (LLView* view, S32 tab_group);
-
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
- static LLSideTrayTab* createInstance ();
-
- const std::string& getDescription () const { return mDescription;}
-
- void onOpen (const LLSD& key);
-
- void toggleTabDocked(bool toggle_floater = true);
- void setDocked(bool dock);
- bool isDocked() const;
-
- BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
-
- LLPanel* getPanel();
-
- LLButton* createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback);
-
-private:
- std::string mTabTitle;
- std::string mImage;
- std::string mImageSelected;
- std::string mDescription;
-
- LLView* mMainPanel;
-
- bool mHasBadge;
- LLBadge::Params mBadgeParams;
- LLSideTrayButton* mSideTrayButton;
-};
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTrayButton
-// Side Tray tab button with "tear off" handling.
-//////////////////////////////////////////////////////////////////////////////
-
-class LLSideTrayButton : public LLButton
-{
-public:
- /*virtual*/ BOOL handleMouseDown(S32 x, S32 y, MASK mask)
- {
- // Route future Mouse messages here preemptively. (Release on mouse up.)
- // No handler needed for focus lost since this class has no state that depends on it.
- gFocusMgr.setMouseCapture(this);
-
- localPointToScreen(x, y, &mDragLastScreenX, &mDragLastScreenY);
-
- // Note: don't pass on to children
- return TRUE;
- }
-
- /*virtual*/ BOOL handleHover(S32 x, S32 y, MASK mask)
- {
- // We only handle the click if the click both started and ended within us
- if( !hasMouseCapture() ) return FALSE;
-
- S32 screen_x;
- S32 screen_y;
- localPointToScreen(x, y, &screen_x, &screen_y);
-
- S32 delta_x = screen_x - mDragLastScreenX;
- S32 delta_y = screen_y - mDragLastScreenY;
-
- LLSideTray* side_tray = LLSideTray::getInstance();
-
- // Check if the tab we are dragging is docked.
- if (!side_tray->isTabAttached(mTabName)) return FALSE;
-
- // Same value is hardcoded in LLDragHandle::handleHover().
- const S32 undock_threshold = 12;
-
- // Detach a tab if it has been pulled further than undock_threshold.
- if (delta_x <= -undock_threshold || delta_x >= undock_threshold ||
- delta_y <= -undock_threshold || delta_y >= undock_threshold)
- {
- LLSideTrayTab* tab = side_tray->getTab(mTabName);
- if (!tab) return FALSE;
-
- tab->setDocked(false);
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab->getName());
- if (!floater_tab) return FALSE;
-
- LLRect original_rect = floater_tab->getRect();
- S32 header_snap_y = floater_tab->getHeaderHeight() / 2;
- S32 snap_x = screen_x - original_rect.mLeft - original_rect.getWidth() / 2;
- S32 snap_y = screen_y - original_rect.mTop + header_snap_y;
-
- // Move the floater to appear "under" the mouse pointer.
- floater_tab->setRect(original_rect.translate(snap_x, snap_y));
-
- // Snap the mouse pointer to the center of the floater header
- // and call 'mouse down' event handler to begin dragging.
- floater_tab->handleMouseDown(original_rect.getWidth() / 2,
- original_rect.getHeight() - header_snap_y,
- mask);
-
- return TRUE;
- }
-
- return FALSE;
- }
-
- void setBadgeDriver(LLSideTrayTabBadgeDriver* driver)
- {
- mBadgeDriver = driver;
- }
-
- void setVisible(BOOL visible)
- {
- setBadgeVisibility(visible);
-
- LLButton::setVisible(visible);
- }
-
-protected:
- LLSideTrayButton(const LLButton::Params& p)
- : LLButton(p)
- , mDragLastScreenX(0)
- , mDragLastScreenY(0)
- , mBadgeDriver(NULL)
- {
- // Find out the tab name to use in handleHover().
- size_t pos = getName().find("_button");
- llassert(pos != std::string::npos);
- mTabName = getName().substr(0, pos);
- }
-
- friend class LLUICtrlFactory;
-
- void draw()
- {
- if (mBadgeDriver)
- {
- setBadgeLabel(mBadgeDriver->getBadgeString());
- }
-
- LLButton::draw();
- }
-
-private:
- S32 mDragLastScreenX;
- S32 mDragLastScreenY;
-
- std::string mTabName;
- LLSideTrayTabBadgeDriver* mBadgeDriver;
-};
-
-
-////////////////////////////////////////////////////
-// LLSideTrayTab implementation
-////////////////////////////////////////////////////
-
-LLSideTrayTab::LLSideTrayTab(const Params& p)
-: LLPanel(),
- mTabTitle(p.tab_title),
- mImage(p.image),
- mImageSelected(p.image_selected),
- mDescription(p.description),
- mMainPanel(NULL),
- mBadgeParams(p.badge),
- mSideTrayButton(NULL)
-{
- mHasBadge = p.badge.isProvided();
-}
-
-LLSideTrayTab::~LLSideTrayTab()
-{
-}
-
-bool LLSideTrayTab::addChild(LLView* view, S32 tab_group)
-{
- if(mMainPanel == 0 && TAB_PANEL_CAPTION_NAME != view->getName())//skip our caption panel
- mMainPanel = view;
- return LLPanel::addChild(view,tab_group);
- //return res;
-}
-
-//virtual
-BOOL LLSideTrayTab::postBuild()
-{
- LLPanel* title_panel = LLUICtrlFactory::getInstance()->createFromFile<LLPanel>("panel_side_tray_tab_caption.xml",this, child_registry_t::instance());
- string name = title_panel->getName();
- LLPanel::addChild(title_panel);
-
- title_panel->getChild<LLTextBox>(TAB_PANEL_CAPTION_TITLE_BOX)->setValue(mTabTitle);
-
- getChild<LLButton>("undock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, false));
- getChild<LLButton>("dock")->setCommitCallback(boost::bind(&LLSideTrayTab::setDocked, this, true));
-
- return LLPanel::postBuild();
-}
-
-static const S32 splitter_margin = 1;
-
-void LLSideTrayTab::reshape (S32 width, S32 height, BOOL called_from_parent )
-{
- LLPanel::reshape(width, height, called_from_parent);
- LLView* title_panel = findChildView(TAB_PANEL_CAPTION_NAME, true);
- if (!title_panel)
- {
- // not fully constructed yet
- return;
- }
-
- S32 title_height = title_panel->getRect().getHeight();
- title_panel->setOrigin( 0, height - title_height );
- title_panel->reshape(width,title_height);
-
- LLRect sRect;
- sRect.setLeftTopAndSize( splitter_margin, height - title_height - splitter_margin,
- width - 2*splitter_margin, height - title_height - 2*splitter_margin);
- mMainPanel->setShape(sRect);
-}
-
-void LLSideTrayTab::onOpen (const LLSD& key)
-{
- LLPanel *panel = getPanel();
- if(panel)
- panel->onOpen(key);
-}
-
-// Attempts to get the existing side tray instance.
-// Needed to avoid recursive calls of LLSideTray::getInstance().
-LLSideTray* LLSideTrayTab::getSideTray()
-{
- // First, check if the side tray is our parent (i.e. we're attached).
- LLSideTray* side_tray = dynamic_cast<LLSideTray*>(getParent());
- if (!side_tray)
- {
- // Detached? Ok, check if the instance exists at all/
- if (LLSideTray::instanceCreated())
- {
- side_tray = LLSideTray::getInstance();
- }
- else
- {
- llerrs << "No safe way to get the side tray instance" << llendl;
- }
- }
-
- return side_tray;
-}
-
-void LLSideTrayTab::toggleTabDocked(bool toggle_floater /* = true */)
-{
- // *FIX: Calling this method twice per frame would crash the viewer.
-
- std::string tab_name = getName();
-
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return;
-
- bool docking = !isDocked();
-
- if (mSideTrayButton)
- {
- mSideTrayButton->setVisible(docking);
- }
-
- // Hide the "Tear Off" button when a tab gets undocked
- // and show "Dock" button instead.
- getChild<LLButton>("undock")->setVisible(docking);
- getChild<LLButton>("dock")->setVisible(!docking);
-
- if (docking)
- {
- dock(floater_tab);
- }
- else
- {
- undock(floater_tab);
- }
-
- // Open/close the floater *after* we reparent the tab panel,
- // so that it doesn't receive redundant visibility change notifications.
- if (toggle_floater)
- {
- LLFloaterReg::toggleInstance("side_bar_tab", tab_name);
- }
-}
-
-// Same as toggleTabDocked() apart from making sure that we do exactly what we want.
-void LLSideTrayTab::setDocked(bool dock)
-{
- if (isDocked() == dock)
- {
- llwarns << "Tab " << getName() << " is already " << (dock ? "docked" : "undocked") << llendl;
- return;
- }
-
- toggleTabDocked();
-}
-
-bool LLSideTrayTab::isDocked() const
-{
- return dynamic_cast<LLSideTray*>(getParent()) != NULL;
-}
-
-BOOL LLSideTrayTab::handleScrollWheel(S32 x, S32 y, S32 clicks)
-{
- // Let children handle the event
- LLUICtrl::handleScrollWheel(x, y, clicks);
-
- // and then eat it to prevent in-world scrolling (STORM-351).
- return TRUE;
-}
-
-void LLSideTrayTab::dock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Before docking the tab, reset its (and its children's) transparency to default (STORM-688).
- floater_tab->updateTransparency(TT_DEFAULT);
-
- if (!side_tray->addTab(this))
- {
- llwarns << "Failed to add tab " << getName() << " to side tray" << llendl;
- return;
- }
-
- setRect(side_tray->getLocalRect());
- reshape(getRect().getWidth(), getRect().getHeight());
-
- // Select the re-docked tab.
- side_tray->selectTabByName(getName());
-
- if (side_tray->getCollapsed())
- {
- side_tray->expandSideBar(false);
- }
-}
-
-static void on_minimize(LLSidepanelAppearance* panel, LLSD minimized)
-{
- if (!panel) return;
- bool visible = !minimized.asBoolean();
- LLSD visibility;
- visibility["visible"] = visible;
- // Do not reset accordion state on minimize (STORM-375)
- visibility["reset_accordion"] = false;
- panel->updateToVisibility(visibility);
-}
-
-void LLSideTrayTab::undock(LLFloater* floater_tab)
-{
- LLSideTray* side_tray = getSideTray();
- if (!side_tray) return;
-
- // Remember whether the tab have been active before detaching
- // because removeTab() will change active tab.
- bool was_active = side_tray->getActiveTab() == this;
-
- // Remove the tab from Side Tray's tabs list.
- // We have to do it despite removing the tab from Side Tray's child view tree
- // by addChild(). Otherwise the tab could be accessed by the pointer in LLSideTray::mTabs.
- if (!side_tray->removeTab(this))
- {
- llwarns << "Failed to remove tab " << getName() << " from side tray" << llendl;
- return;
- }
-
- // If we're undocking while side tray is collapsed we need to explicitly show the panel.
- if (!getVisible())
- {
- setVisible(true);
- }
-
- floater_tab->addChild(this);
- floater_tab->setTitle(mTabTitle);
- floater_tab->setName(getName());
-
- // Resize handles get obscured by added panel so move them to front.
- floater_tab->moveResizeHandlesToFront();
-
- // Reshape the floater if needed.
- LLRect floater_rect;
- if (floater_tab->hasSavedRect())
- {
- // We've got saved rect for the floater, hence no need to reshape it.
- floater_rect = floater_tab->getLocalRect();
- }
- else
- {
- // Detaching for the first time. Reshape the floater.
- floater_rect = side_tray->getLocalRect();
-
- // Reduce detached floater height by small BOTTOM_BAR_PAD not to make it flush with the bottom bar.
- floater_rect.mBottom += LLBottomTray::getInstance()->getRect().getHeight() + BOTTOM_BAR_PAD;
- floater_rect.makeValid();
- floater_tab->reshape(floater_rect.getWidth(), floater_rect.getHeight());
- }
-
- // Reshape the panel.
- {
- LLRect panel_rect = floater_tab->getLocalRect();
- panel_rect.mTop -= floater_tab->getHeaderHeight();
- panel_rect.makeValid();
- setRect(panel_rect);
- reshape(panel_rect.getWidth(), panel_rect.getHeight());
- }
-
- // Set FOLLOWS_ALL flag for the tab to follow floater dimensions upon resizing.
- setFollowsAll();
-
- // Camera view may need to be changed for appearance panel(STORM-301) on minimize of floater,
- // so setting callback here.
- if (getName() == "sidebar_appearance")
- {
- LLSidepanelAppearance* panel_appearance = dynamic_cast<LLSidepanelAppearance*>(getPanel());
- if(panel_appearance)
- {
- floater_tab->setMinimizeCallback(boost::bind(&on_minimize, panel_appearance, _2));
- }
- }
-
- if (!side_tray->getCollapsed())
- {
- side_tray->collapseSideBar();
- }
-
- if (!was_active)
- {
- // When a tab other then current active tab is detached from Side Tray
- // onOpen() should be called as tab visibility is changed.
- onOpen(LLSD());
- }
-}
-
-LLPanel* LLSideTrayTab::getPanel()
-{
- LLPanel* panel = dynamic_cast<LLPanel*>(mMainPanel);
- return panel;
-}
-
-LLSideTrayTab* LLSideTrayTab::createInstance ()
-{
- LLSideTrayTab::Params tab_params;
- tab_params.tab_title("openclose");
-
- LLSideTrayTab* tab = LLUICtrlFactory::create<LLSideTrayTab>(tab_params);
- return tab;
-}
-
-// Now that we know the definition of LLSideTrayTab, we can implement
-// tab_cast.
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab) { return tab; }
-
-//////////////////////////////////////////////////////////////////////////////
-// LLSideTray
-//////////////////////////////////////////////////////////////////////////////
-
-LLSideTray::Params::Params()
-: collapsed("collapsed",false),
- tab_btn_image_normal("tab_btn_image",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Off.png")),
- tab_btn_image_selected("tab_btn_image_selected",LLUI::getUIImage("taskpanel/TaskPanel_Tab_Selected.png")),
- default_button_width("tab_btn_width",32),
- default_button_height("tab_btn_height",32),
- default_button_margin("tab_btn_margin",0)
-{}
-
-//virtual
-LLSideTray::LLSideTray(const Params& params)
- : LLPanel(params)
- ,mActiveTab(0)
- ,mCollapsed(false)
- ,mCollapseButton(0)
-{
- mCollapsed=params.collapsed;
-
- LLUICtrl::CommitCallbackRegistry::Registrar& commit = LLUICtrl::CommitCallbackRegistry::currentRegistrar();
-
- // register handler function to process data from the xml.
- // panel_name should be specified via "parameter" attribute.
- commit.add("SideTray.ShowPanel", boost::bind(&LLSideTray::showPanel, this, _2, LLUUID::null));
- commit.add("SideTray.Toggle", boost::bind(&LLSideTray::onToggleCollapse, this));
- commit.add("SideTray.Collapse", boost::bind(&LLSideTray::collapseSideBar, this));
- LLTransientFloaterMgr::getInstance()->addControlView(this);
- LLView* side_bar_tabs = gViewerWindow->getRootView()->getChildView("side_bar_tabs");
- if (side_bar_tabs != NULL)
- {
- LLTransientFloaterMgr::getInstance()->addControlView(side_bar_tabs);
- }
-
- LLPanel::Params p;
- p.name = "buttons_panel";
- p.mouse_opaque = false;
- mButtonsPanel = LLUICtrlFactory::create<LLPanel>(p);
-}
-
-
-BOOL LLSideTray::postBuild()
-{
- createButtons();
-
- arrange();
- selectTabByName("sidebar_home");
-
- if(mCollapsed)
- collapseSideBar();
-
- setMouseOpaque(false);
-
- LLAppViewer::instance()->setOnLoginCompletedCallback(boost::bind(&LLSideTray::handleLoginComplete, this));
-
- // Remember original tabs order, so that we can restore it if user detaches and then re-attaches a tab.
- for (child_vector_const_iter_t it = mTabs.begin(); it != mTabs.end(); ++it)
- {
- std::string tab_name = (*it)->getName();
- mOriginalTabOrder.push_back(tab_name);
- }
-
- //EXT-8045
- //connect all already created channels to reflect sidetray collapse/expand
- std::vector<LLChannelManager::ChannelElem>& channels = LLChannelManager::getInstance()->getChannelList();
- for(std::vector<LLChannelManager::ChannelElem>::iterator it = channels.begin();it!=channels.end();++it)
- {
- if ((*it).channel)
- {
- setVisibleWidthChangeCallback(boost::bind(&LLScreenChannelBase::resetPositionAndSize, (*it).channel));
- }
- }
-
- return true;
-}
-
-void LLSideTray::setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver)
-{
- mTabButtonBadgeDrivers[tabName] = driver;
-}
-
-void LLSideTray::handleLoginComplete()
-{
- //reset tab to "home" tab if it was changesd during login process
- selectTabByName("sidebar_home");
-
- for (badge_map_t::iterator it = mTabButtonBadgeDrivers.begin(); it != mTabButtonBadgeDrivers.end(); ++it)
- {
- LLButton* button = mTabButtons[it->first];
- LLSideTrayButton* side_button = dynamic_cast<LLSideTrayButton*>(button);
-
- if (side_button)
- {
- side_button->setBadgeDriver(it->second);
- }
- else
- {
- llwarns << "Unable to find button " << it->first << " to set the badge driver. " << llendl;
- }
- }
-
- detachTabs();
-}
-
-LLSideTrayTab* LLSideTray::getTab(const std::string& name)
-{
- return findChild<LLSideTrayTab>(name,false);
-}
-
-bool LLSideTray::isTabAttached(const std::string& name)
-{
- LLSideTrayTab* tab = getTab(name);
- llassert(tab);
- if (!tab) return false;
-
- return std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end();
-}
-
-bool LLSideTray::hasTabs()
-{
- // The open/close tab doesn't count.
- return mTabs.size() > 1;
-}
-
-void LLSideTray::toggleTabButton(LLSideTrayTab* tab)
-{
- if(tab == NULL)
- return;
- std::string name = tab->getName();
- std::map<std::string,LLButton*>::iterator it = mTabButtons.find(name);
- if(it != mTabButtons.end())
- {
- LLButton* btn = it->second;
- bool new_state = !btn->getToggleState();
- btn->setToggleState(new_state);
- // Only highlight the tab if side tray is expanded (STORM-157).
- btn->setImageOverlay( new_state && !getCollapsed() ? tab->mImageSelected : tab->mImage );
- }
-}
-
-LLPanel* LLSideTray::openChildPanel(LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params)
-{
- LLView* view = tab->findChildView(panel_name, true);
- if (!view) return NULL;
-
- std::string tab_name = tab->getName();
-
- bool tab_attached = isTabAttached(tab_name);
-
- if (tab_attached && LLUI::sSettingGroups["config"]->getBOOL("OpenSidePanelsInFloaters"))
- {
- tab->setDocked(false);
- tab_attached = false;
- }
-
- // Select tab and expand Side Tray only when a tab is attached.
- if (tab_attached)
- {
- selectTabByName(tab_name);
- if (mCollapsed)
- expandSideBar();
- }
- else
- {
- LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
- if (!floater_tab) return NULL;
-
- floater_tab->openFloater(tab_name);
- }
-
- LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
- if (container)
- {
- LLSD new_params = params;
- new_params[LLSideTrayPanelContainer::PARAM_SUB_PANEL_NAME] = panel_name;
- container->onOpen(new_params);
-
- return container->getCurrentPanel();
- }
-
- LLPanel* panel = dynamic_cast<LLPanel*>(view);
- if (panel)
- {
- panel->onOpen(params);
- }
-
- return panel;
-}
-
-bool LLSideTray::selectTabByIndex(size_t index)
-{
- if(index>=mTabs.size())
- return false;
-
- LLSideTrayTab* sidebar_tab = mTabs[index];
- return selectTabByName(sidebar_tab->getName());
-}
-
-bool LLSideTray::selectTabByName(const std::string& name, bool keep_prev_visible)
-{
- LLSideTrayTab* tab_to_keep_visible = NULL;
- LLSideTrayTab* new_tab = getTab(name);
- if (!new_tab) return false;
-
- // Bail out if already selected.
- if (new_tab == mActiveTab)
- return false;
-
- //deselect old tab
- if (mActiveTab)
- {
- // Keep previously active tab visible if requested.
- if (keep_prev_visible) tab_to_keep_visible = mActiveTab;
- toggleTabButton(mActiveTab);
- }
-
- //select new tab
- mActiveTab = new_tab;
-
- if (mActiveTab)
- {
- toggleTabButton(mActiveTab);
- LLSD key;//empty
- mActiveTab->onOpen(key);
- }
-
- //arrange();
-
- //hide all tabs - show active tab
- child_vector_const_iter_t child_it;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- bool vis = sidebar_tab == mActiveTab;
-
- // Force keeping the tab visible if requested.
- vis |= sidebar_tab == tab_to_keep_visible;
-
- // When the last tab gets detached, for a short moment the "Toggle Sidebar" pseudo-tab
- // is shown. So, to avoid the flicker we make sure it never gets visible.
- vis &= (*child_it)->getName() != "sidebar_openclose";
-
- sidebar_tab->setVisible(vis);
- }
- return true;
-}
-
-bool LLSideTray::addChild(LLView* view, S32 tab_group)
-{
- LLSideTrayTab* tab_panel = dynamic_cast<LLSideTrayTab*>(view);
-
- if (tab_panel)
- {
- mTabs.push_back(tab_panel);
- }
-
- return LLUICtrl::addChild(view, tab_group);
-}
-
-bool LLSideTray::removeTab(LLSideTrayTab* tab)
-{
- if (!tab) return false;
- std::string tab_name = tab->getName();
-
- // Look up the tab in the list of known tabs.
- child_vector_iter_t tab_it = std::find(mTabs.begin(), mTabs.end(), tab);
- if (tab_it == mTabs.end())
- {
- llwarns << "Cannot find tab named " << tab_name << llendl;
- return false;
- }
-
- // Find the button corresponding to the tab.
- button_map_t::iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Cannot find button for tab named " << tab_name << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Deselect the tab.
- if (mActiveTab == tab)
- {
- // Select the next tab (or first one, if we're removing the last tab),
- // skipping the fake open/close tab (STORM-155).
- child_vector_iter_t next_tab_it = tab_it;
- do
- {
- next_tab_it = (next_tab_it < (mTabs.end() - 1)) ? next_tab_it + 1 : mTabs.begin();
- }
- while ((*next_tab_it)->getName() == "sidebar_openclose");
-
- selectTabByName((*next_tab_it)->getName(), true); // Don't hide the tab being removed.
- }
-
- // Remove the tab.
- removeChild(tab);
- mTabs.erase(tab_it);
-
- // Add the tab to detached tabs list.
- mDetachedTabs.push_back(tab);
-
- // Remove the button from the buttons panel so that it isn't drawn anymore.
- mButtonsPanel->removeChild(btn);
-
- // Re-arrange remaining tabs.
- arrange();
-
- return true;
-}
-
-bool LLSideTray::addTab(LLSideTrayTab* tab)
-{
- if (tab == NULL) return false;
-
- std::string tab_name = tab->getName();
-
- // Make sure the tab isn't already in the list.
- if (std::find(mTabs.begin(), mTabs.end(), tab) != mTabs.end())
- {
- llwarns << "Attempt to re-add existing tab " << tab_name << llendl;
- return false;
- }
-
- // Look up the corresponding button.
- button_map_t::const_iterator btn_it = mTabButtons.find(tab_name);
- if (btn_it == mTabButtons.end())
- {
- llwarns << "Tab " << tab_name << " has no associated button" << llendl;
- return false;
- }
- LLButton* btn = btn_it->second;
-
- // Insert the tab at its original position.
- LLUICtrl::addChild(tab);
- {
- tab_order_vector_const_iter_t new_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), tab_name);
- llassert(new_tab_orig_pos != mOriginalTabOrder.end());
- child_vector_iter_t insert_pos = mTabs.end();
-
- for (child_vector_iter_t tab_it = mTabs.begin(); tab_it != mTabs.end(); ++tab_it)
- {
- tab_order_vector_const_iter_t cur_tab_orig_pos =
- std::find(mOriginalTabOrder.begin(), mOriginalTabOrder.end(), (*tab_it)->getName());
- llassert(cur_tab_orig_pos != mOriginalTabOrder.end());
-
- if (new_tab_orig_pos < cur_tab_orig_pos)
- {
- insert_pos = tab_it;
- break;
- }
- }
-
- mTabs.insert(insert_pos, tab);
- }
-
- // Add the button to the buttons panel so that it's drawn again.
- mButtonsPanel->addChildInBack(btn);
-
- // Arrange tabs after inserting a new one.
- arrange();
-
- // Remove the tab from the list of detached tabs.
- child_vector_iter_t tab_it = std::find(mDetachedTabs.begin(), mDetachedTabs.end(), tab);
- if (tab_it != mDetachedTabs.end())
- {
- mDetachedTabs.erase(tab_it);
- }
-
- return true;
-}
-
-LLButton* LLSideTrayTab::createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback)
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
-
- LLRect rect;
- rect.setOriginAndSize(0, 0, sidetray_params.default_button_width, sidetray_params.default_button_height);
-
- LLButton::Params bparams;
-
- // Append "_button" to the side tray tab name
- std::string button_name = getName() + "_button";
- bparams.name(button_name);
- bparams.follows.flags (FOLLOWS_LEFT | FOLLOWS_TOP);
- bparams.rect (rect);
- bparams.tab_stop(false);
- bparams.image_unselected(sidetray_params.tab_btn_image_normal);
- bparams.image_selected(sidetray_params.tab_btn_image_selected);
- bparams.image_disabled(sidetray_params.tab_btn_image_normal);
- bparams.image_disabled_selected(sidetray_params.tab_btn_image_selected);
-
- if (mHasBadge)
- {
- bparams.badge = mBadgeParams;
- }
-
- LLButton* button;
- if (allowTearOff)
- {
- mSideTrayButton = LLUICtrlFactory::create<LLSideTrayButton>(bparams);
-
- button = mSideTrayButton;
- }
- else
- {
- // "Open/Close" button shouldn't allow "tear off"
- // hence it is created as LLButton instance.
- button = LLUICtrlFactory::create<LLButton>(bparams);
- }
-
- button->setClickedCallback(callback);
-
- button->setToolTip(mTabTitle);
-
- if(mImage.length())
- {
- button->setImageOverlay(mImage);
- }
-
- return button;
-}
-
-void LLSideTray::createButtons()
-{
- //create buttons for tabs
- child_vector_const_iter_t child_it = mTabs.begin();
- for ( ; child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- std::string name = sidebar_tab->getName();
-
- // The "OpenClose" button will open/close the whole panel
- if (name == "sidebar_openclose")
- {
- mCollapseButton = sidebar_tab->createButton(false, boost::bind(&LLSideTray::onToggleCollapse, this));
-
- mButtonsPanel->addChildInBack(mCollapseButton);
-
- LLHints::registerHintTarget("side_panel_btn", mCollapseButton->getHandle());
- }
- else
- {
- LLButton* button = sidebar_tab->createButton(true, boost::bind(&LLSideTray::onTabButtonClick, this, name));
-
- mButtonsPanel->addChildInBack(button);
-
- mTabButtons[name] = button;
- }
- }
-
- LLHints::registerHintTarget("inventory_btn", mTabButtons["sidebar_inventory"]->getHandle());
-}
-
-void LLSideTray::processTriState ()
-{
- if(mCollapsed)
- expandSideBar();
- else
- {
-#if 0 // *TODO: EXT-2092
-
- // Tell the active task panel to switch to its default view
- // or collapse side tray if already on the default view.
- LLSD info;
- info["task-panel-action"] = "handle-tri-state";
- mActiveTab->notifyChildren(info);
-#else
- collapseSideBar();
-#endif
- }
-}
-
-void LLSideTray::onTabButtonClick(string name)
-{
- LLSideTrayTab* tab = getTab(name);
- if (!tab) return;
-
- if(tab == mActiveTab)
- {
- processTriState ();
- return;
- }
- selectTabByName (name);
- if(mCollapsed)
- expandSideBar();
-}
-
-void LLSideTray::onToggleCollapse()
-{
- LLFirstUse::notUsingSidePanel(false);
- if(mCollapsed)
- {
- expandSideBar();
- //selectTabByName("sidebar_openclose");
- }
- else
- collapseSideBar();
-}
-
-
-void LLSideTray::reflectCollapseChange()
-{
- updateSidetrayVisibility();
-
- setFocus(!mCollapsed);
-
- gFloaterView->refresh();
-}
-
-void LLSideTray::arrange()
-{
- static LLSideTray::Params sidetray_params(LLUICtrlFactory::getDefaultParams<LLSideTray>());
-
- updateSidetrayVisibility();
-
- LLRect ctrl_rect;
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight() - sidetray_params.default_button_width,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- mCollapseButton->setRect(ctrl_rect);
-
- //arrange tab buttons
- //arrange tab buttons
- child_vector_const_iter_t child_it;
- int offset = (sidetray_params.default_button_height+sidetray_params.default_button_margin)*2;
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
-
- ctrl_rect.setLeftTopAndSize(0,
- mButtonsPanel->getRect().getHeight()-offset,
- sidetray_params.default_button_width,
- sidetray_params.default_button_height);
-
- if(mTabButtons.find(sidebar_tab->getName()) == mTabButtons.end())
- continue;
-
- LLButton* btn = mTabButtons[sidebar_tab->getName()];
-
- btn->setRect(ctrl_rect);
- offset+=sidetray_params.default_button_height;
- offset+=sidetray_params.default_button_margin;
-
- btn->setVisible(ctrl_rect.mBottom > 0);
- }
-
- //arrange tabs
- for ( child_vector_t::iterator child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLSideTrayTab* sidebar_tab = *child_it;
- sidebar_tab->setShape(getLocalRect());
- }
-
- // The tab buttons should be shown only if there is at least one non-detached tab.
- // Also hide them in mouse-look mode.
- mButtonsPanel->setVisible(hasTabs() && !gAgentCamera.cameraMouselook());
-}
-
-// Detach those tabs that were detached when the viewer exited last time.
-void LLSideTray::detachTabs()
-{
- // copy mTabs because LLSideTray::toggleTabDocked() modifies it.
- child_vector_t tabs = mTabs;
-
- for (child_vector_const_iter_t it = tabs.begin(); it != tabs.end(); ++it)
- {
- LLSideTrayTab* tab = *it;
-
- std::string floater_ctrl_name = LLFloater::getControlName("side_bar_tab", LLSD(tab->getName()));
- std::string vis_ctrl_name = LLFloaterReg::getVisibilityControlName(floater_ctrl_name);
- if (!LLFloater::getControlGroup()->controlExists(vis_ctrl_name)) continue;
-
- bool is_visible = LLFloater::getControlGroup()->getBOOL(vis_ctrl_name);
- if (!is_visible) continue;
-
- llassert(isTabAttached(tab->getName()));
- tab->setDocked(false);
- }
-}
-
-void LLSideTray::collapseSideBar()
-{
- mCollapsed = true;
- // Reset all overlay images, because there is no "selected" tab when the
- // whole side tray is hidden.
- child_vector_const_iter_t it = mTabs.begin();
- for ( ; it != mTabs.end(); ++it )
- {
- LLSideTrayTab* tab = *it;
- std::string name = tab->getName();
- std::map<std::string,LLButton*>::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( tab->mImage );
- }
- }
-
- // OpenClose tab doesn't put its button in mTabButtons
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImage );
- }
- //mActiveTab->setVisible(FALSE);
- reflectCollapseChange();
- setFocus( FALSE );
-}
-
-void LLSideTray::expandSideBar(bool open_active)
-{
- mCollapsed = false;
- LLSideTrayTab* openclose_tab = getTab("sidebar_openclose");
- if (openclose_tab)
- {
- mCollapseButton->setImageOverlay( openclose_tab->mImageSelected );
- }
-
- if (open_active)
- {
- mActiveTab->onOpen(LLSD());
- }
-
- reflectCollapseChange();
-
-
- std::string name = mActiveTab->getName();
- std::map<std::string,LLButton*>::const_iterator btn_it =
- mTabButtons.find(name);
- if (btn_it != mTabButtons.end())
- {
- LLButton* btn = btn_it->second;
- btn->setImageOverlay( mActiveTab->mImageSelected );
- }
-}
-
-void LLSideTray::highlightFocused()
-{
- /* uncomment in case something change
- if(!mActiveTab)
- return;
- BOOL dependent_has_focus = gFocusMgr.childHasKeyboardFocus(this);
- setBackgroundOpaque( dependent_has_focus );
- mActiveTab->setBackgroundOpaque( dependent_has_focus );
- */
-}
-
-//virtual
-BOOL LLSideTray::handleMouseDown (S32 x, S32 y, MASK mask)
-{
- BOOL ret = LLPanel::handleMouseDown(x,y,mask);
- if(ret)
- setFocus(true);
- return ret;
-}
-
-void LLSideTray::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- LLPanel::reshape(width, height, called_from_parent);
- if(!mActiveTab)
- return;
-
- arrange();
-}
-
-// This is just LLView::findChildView specialized to restrict the search to LLPanels.
-// Optimization for EXT-4068 to avoid searching down to the individual item level
-// when inventories are large.
-LLPanel *findChildPanel(LLPanel *panel, const std::string& name, bool recurse)
-{
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
- if (!child_panel)
- continue;
- if (child_panel->getName() == name)
- return child_panel;
- }
- if (recurse)
- {
- for (LLView::child_list_const_iter_t child_it = panel->beginChild();
- child_it != panel->endChild(); ++child_it)
- {
- LLPanel *child_panel = dynamic_cast<LLPanel*>(*child_it);
- if (!child_panel)
- continue;
- LLPanel *found_panel = findChildPanel(child_panel,name,recurse);
- if (found_panel)
- {
- return found_panel;
- }
- }
- }
- return NULL;
-}
-
-/**
- * Activate tab with "panel_name" panel
- * if no such tab - return false, otherwise true.
- * TODO* In some cases a pointer to a panel of
- * a specific class may be needed so this method
- * would need to use templates.
- */
-LLPanel* LLSideTray::showPanel (const std::string& panel_name, const LLSD& params)
-{
- LLPanel* new_panel = NULL;
-
- // Look up the tab in the list of detached tabs.
- child_vector_const_iter_t child_it;
- for ( child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- // Look up the tab in the list of attached tabs.
- for ( child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- new_panel = openChildPanel(*child_it, panel_name, params);
- if (new_panel) break;
- }
-
- return new_panel;
-}
-
-bool LLSideTray::hidePanel(const std::string& panel_name)
-{
- bool panelHidden = false;
-
- LLPanel* panelp = getPanel(panel_name);
-
- if (panelp)
- {
- LLView* parentp = panelp->getParent();
-
- // Collapse the side bar if the panel or the panel's parent is an attached tab
- if (isTabAttached(panel_name) || (parentp && isTabAttached(parentp->getName())))
- {
- collapseSideBar();
- panelHidden = true;
- }
- else
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", panel_name);
-
- if (!panelHidden)
- {
- // Look up the panel in the list of detached tabs.
- for (child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *detached_panel = dynamic_cast<LLPanel*>(*child_it);
-
- if (detached_panel)
- {
- // Hide this detached panel if it is a parent of our panel
- if (findChildPanel(detached_panel, panel_name, true) != NULL)
- {
- panelHidden = LLFloaterReg::hideInstance("side_bar_tab", detached_panel->getName());
- break;
- }
- }
- }
- }
- }
- }
-
- return panelHidden;
-}
-
-void LLSideTray::togglePanel(LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params)
-{
- if(!sub_panel)
- return;
-
- // If a panel is visible and attached to Side Tray (has LLSideTray among its ancestors)
- // it should be toggled off by collapsing Side Tray.
- if (sub_panel->isInVisibleChain() && sub_panel->hasAncestor(this))
- {
- LLSideTray::getInstance()->collapseSideBar();
- }
- else
- {
- LLSideTray::getInstance()->showPanel(panel_name, params);
- }
-}
-
-LLPanel* LLSideTray::getPanel(const std::string& panel_name)
-{
- // Look up the panel in the list of detached tabs.
- for ( child_vector_const_iter_t child_it = mDetachedTabs.begin(); child_it != mDetachedTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
-
- // Look up the panel in the list of attached tabs.
- for ( child_vector_const_iter_t child_it = mTabs.begin(); child_it != mTabs.end(); ++child_it)
- {
- LLPanel *panel = findChildPanel(*child_it,panel_name,true);
- if(panel)
- {
- return panel;
- }
- }
- return NULL;
-}
-
-LLPanel* LLSideTray::getActivePanel()
-{
- if (mActiveTab && !mCollapsed)
- {
- return mActiveTab->getPanel();
- }
- return NULL;
-}
-
-bool LLSideTray::isPanelActive(const std::string& panel_name)
-{
- LLPanel *panel = getActivePanel();
- if (!panel) return false;
- return (panel->getName() == panel_name);
-}
-
-void LLSideTray::setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater /* = true*/)
-{
- // Lookup tab by name.
- LLSideTrayTab* tab = getTab(tab_name);
- if (!tab)
- { // not a docked tab, look through detached tabs
- for(child_vector_iter_t tab_it = mDetachedTabs.begin(), tab_end_it = mDetachedTabs.end();
- tab_it != tab_end_it;
- ++tab_it)
- {
- if ((*tab_it)->getName() == tab_name)
- {
- tab = *tab_it;
- break;
- }
- }
-
- }
-
- llassert(tab != NULL);
-
- // Toggle its dock state.
- if (tab && tab->isDocked() != dock)
- {
- tab->toggleTabDocked(toggle_floater);
- }
-}
-
-
-void LLSideTray::updateSidetrayVisibility()
-{
- // set visibility of parent container based on collapsed state
- LLView* parent = getParent();
- if (parent)
- {
- bool old_visibility = parent->getVisible();
- bool new_visibility = !mCollapsed && !gAgentCamera.cameraMouselook();
-
- if (old_visibility != new_visibility)
- {
- parent->setVisible(new_visibility);
-
- // Signal change of visible width.
- //llinfos << "Visible: " << new_visibility << llendl;
- mVisibleWidthChangeSignal(this, new_visibility);
- }
- }
-}
-
-S32 LLSideTray::getVisibleWidth()
-{
- return (isInVisibleChain() && !mCollapsed) ? getRect().getWidth() : 0;
-}
-
-void LLSideTray::setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb)
-{
- mVisibleWidthChangeSignal.connect(cb);
-}
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h
deleted file mode 100644
index 17158329dc..0000000000
--- a/indra/newview/llsidetray.h
+++ /dev/null
@@ -1,260 +0,0 @@
-/**
- * @file LLSideTray.h
- * @brief SideBar header file
- *
- * $LicenseInfo:firstyear=2004&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 LL_LLSIDETRAY_H_
-#define LL_LLSIDETRAY_H_
-
-#include "llpanel.h"
-#include "string"
-
-class LLAccordionCtrl;
-class LLSideTrayTab;
-
-// Define an interface for side tab button badge values
-class LLSideTrayTabBadgeDriver
-{
-public:
- virtual std::string getBadgeString() const = 0;
-};
-
-// Deal with LLSideTrayTab being opaque. Generic do-nothing cast...
-template <class T>
-T tab_cast(LLSideTrayTab* tab) { return tab; }
-// specialized for implementation in presence of LLSideTrayTab definition
-template <>
-LLPanel* tab_cast<LLPanel*>(LLSideTrayTab* tab);
-
-// added inheritance from LLDestroyClass<LLSideTray> to enable Side Tray perform necessary actions
-// while disconnecting viewer in LLAppViewer::disconnectViewer().
-// LLDestroyClassList::instance().fireCallbacks() calls destroyClass method. See EXT-245.
-class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray>
-{
- friend class LLUICtrlFactory;
- friend class LLDestroyClass<LLSideTray>;
- friend class LLSideTrayTab;
- friend class LLSideTrayButton;
-public:
-
- LOG_CLASS(LLSideTray);
-
- struct Params
- : public LLInitParam::Block<Params, LLPanel::Params>
- {
- // initial state
- Optional<bool> collapsed;
- Optional<LLUIImage*> tab_btn_image_normal,
- tab_btn_image_selected;
-
- Optional<S32> default_button_width,
- default_button_height,
- default_button_margin;
-
- Params();
- };
-
- static LLSideTray* getInstance ();
- static bool instanceCreated ();
-protected:
- LLSideTray(const Params& params);
- typedef std::vector<LLSideTrayTab*> child_vector_t;
- typedef child_vector_t::iterator child_vector_iter_t;
- typedef child_vector_t::const_iterator child_vector_const_iter_t;
- typedef child_vector_t::reverse_iterator child_vector_reverse_iter_t;
- typedef child_vector_t::const_reverse_iterator child_vector_const_reverse_iter_t;
- typedef std::vector<std::string> tab_order_vector_t;
- typedef tab_order_vector_t::const_iterator tab_order_vector_const_iter_t;
-
-public:
-
- // interface functions
-
- /**
- * Select tab with specific name and set it active
- *
- * @param name Tab to switch to.
- * @param keep_prev_visible Whether to keep the previously selected tab visible.
- */
- bool selectTabByName (const std::string& name, bool keep_prev_visible = false);
-
- /**
- * Select tab with specific index and set it active
- */
- bool selectTabByIndex(size_t index);
-
- /**
- * Activate tab with "panel_name" panel
- * if no such tab - return NULL, otherwise a pointer to the panel
- * Pass params as array, or they may be overwritten(example - params["name"]="nearby")
- */
- LLPanel* showPanel (const std::string& panel_name, const LLSD& params = LLSD());
-
- bool hidePanel (const std::string& panel_name);
-
- /**
- * Toggling Side Tray tab which contains "sub_panel" child of "panel_name" panel.
- * If "sub_panel" is not visible Side Tray is opened to display it,
- * otherwise Side Tray is collapsed.
- * params are passed to "panel_name" panel onOpen().
- */
- void togglePanel (LLPanel* &sub_panel, const std::string& panel_name, const LLSD& params = LLSD());
-
- /*
- * get the panel (don't show it or do anything else with it)
- */
- LLPanel* getPanel (const std::string& panel_name);
- LLPanel* getActivePanel ();
- bool isPanelActive (const std::string& panel_name);
-
- void setTabDocked(const std::string& tab_name, bool dock, bool toggle_floater = true);
-
- /*
- * get the panel of given type T (don't show it or do anything else with it)
- */
- template <typename T>
- T* getPanel(const std::string& panel_name)
- {
- T* panel = dynamic_cast<T*>(getPanel(panel_name));
- if (!panel)
- {
- llwarns << "Child named \"" << panel_name << "\" of type " << typeid(T*).name() << " not found" << llendl;
- return NULL;
- }
- return panel;
- }
-
- /*
- * collapse SideBar, hiding visible tab and moving tab buttons
- * to the right corner of the screen
- */
- void collapseSideBar ();
-
- /*
- * expand SideBar
- *
- * @param open_active Whether to call onOpen() for the active tab.
- */
- void expandSideBar(bool open_active = true);
-
-
- /**
- *hightlight if focused. manly copypaste from highlightFocusedFloater
- */
- void highlightFocused();
-
- void setVisible(BOOL visible)
- {
- if (getParent()) getParent()->setVisible(visible);
- }
-
- LLPanel* getButtonsPanel() { return mButtonsPanel; }
-
- bool getCollapsed() { return mCollapsed; }
-
- void setTabButtonBadgeDriver(std::string tabName, LLSideTrayTabBadgeDriver* driver);
-
-public:
- virtual ~LLSideTray(){};
-
- virtual BOOL postBuild();
-
- BOOL handleMouseDown (S32 x, S32 y, MASK mask);
-
- void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
-
-
- /**
- * @return side tray width if it's visible and expanded, 0 otherwise.
- *
- * Not that width of the tab buttons is not included.
- *
- * @see setVisibleWidthChangeCallback()
- */
- S32 getVisibleWidth();
-
- void setVisibleWidthChangeCallback(const commit_signal_t::slot_type& cb);
-
- void updateSidetrayVisibility();
-
- void handleLoginComplete();
-
- bool isTabAttached (const std::string& name);
-
-protected:
- bool addChild (LLView* view, S32 tab_group);
- bool removeTab (LLSideTrayTab* tab); // Used to detach tabs temporarily
- bool addTab (LLSideTrayTab* tab); // Used to re-attach tabs
- bool hasTabs ();
-
- const LLSideTrayTab* getActiveTab() const { return mActiveTab; }
- LLSideTrayTab* getTab(const std::string& name);
-
- void createButtons ();
-
- void arrange ();
- void detachTabs ();
- void reflectCollapseChange();
- void processTriState ();
-
- void toggleTabButton (LLSideTrayTab* tab);
-
- LLPanel* openChildPanel (LLSideTrayTab* tab, const std::string& panel_name, const LLSD& params);
-
- void onTabButtonClick(std::string name);
- void onToggleCollapse();
-
-private:
- // Implementation of LLDestroyClass<LLSideTray>
- static void destroyClass()
- {
- // Disable SideTray to avoid crashes. EXT-245
- if (LLSideTray::instanceCreated())
- LLSideTray::getInstance()->setEnabled(FALSE);
- }
-
-private:
- // Since we provide no public way to query mTabs and mDetachedTabs, give
- // LLSideTrayListener friend access.
- friend class LLSideTrayListener;
- LLPanel* mButtonsPanel;
- typedef std::map<std::string,LLButton*> button_map_t;
- button_map_t mTabButtons;
- typedef std::map<std::string,LLSideTrayTabBadgeDriver*> badge_map_t;
- badge_map_t mTabButtonBadgeDrivers;
- child_vector_t mTabs;
- child_vector_t mDetachedTabs;
- tab_order_vector_t mOriginalTabOrder;
- LLSideTrayTab* mActiveTab;
-
- commit_signal_t mVisibleWidthChangeSignal;
-
- LLButton* mCollapseButton;
- bool mCollapsed;
-
- static LLSideTray* sInstance;
-};
-
-#endif
-
diff --git a/indra/newview/llsidetraylistener.cpp b/indra/newview/llsidetraylistener.cpp
deleted file mode 100644
index cd6fa28948..0000000000
--- a/indra/newview/llsidetraylistener.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * @file llsidetraylistener.cpp
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief Implementation for llsidetraylistener.
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-// Precompiled header
-#include "llviewerprecompiledheaders.h"
-// associated header
-#include "llsidetraylistener.h"
-// STL headers
-// std headers
-// external library headers
-// other Linden headers
-#include "llsidetray.h"
-#include "llsdutil.h"
-
-LLSideTrayListener::LLSideTrayListener(const Getter& getter):
- LLEventAPI("LLSideTray",
- "Operations on side tray (e.g. query state, query tabs)"),
- mGetter(getter)
-{
- add("getCollapsed", "Send on [\"reply\"] an [\"open\"] Boolean",
- &LLSideTrayListener::getCollapsed, LLSDMap("reply", LLSD()));
- add("getTabs",
- "Send on [\"reply\"] a map of tab names and info about them",
- &LLSideTrayListener::getTabs, LLSDMap("reply", LLSD()));
- add("getPanels",
- "Send on [\"reply\"] data about panels available with SideTray.ShowPanel",
- &LLSideTrayListener::getPanels, LLSDMap("reply", LLSD()));
-}
-
-void LLSideTrayListener::getCollapsed(const LLSD& event) const
-{
- sendReply(LLSDMap("open", ! mGetter()->getCollapsed()), event);
-}
-
-void LLSideTrayListener::getTabs(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- LLSD::Integer ord(0);
- for (LLSideTray::child_list_const_iter_t chi(tray->beginChild()), chend(tray->endChild());
- chi != chend; ++chi, ++ord)
- {
- LLView* child = *chi;
- // How much info is important? Toss in as much as seems reasonable for
- // each tab. But to me, at least for the moment, the most important
- // item is the tab name.
- LLSD info;
- // I like the idea of returning a map keyed by tab name. But as
- // compared to an array of maps, that loses sequence information.
- // Address that by indicating the original order in each map entry.
- info["ord"] = ord;
- info["visible"] = bool(child->getVisible());
- info["enabled"] = bool(child->getEnabled());
- info["available"] = child->isAvailable();
- reply[child->getName()] = info;
- }
-
- sendReply(reply, event);
-}
-
-static LLSD getTabInfo(LLPanel* tab)
-{
- LLSD panels;
- for (LLPanel::tree_iterator_t ti(tab->beginTreeDFS()), tend(tab->endTreeDFS());
- ti != tend; ++ti)
- {
- // *ti is actually an LLView*, which had better not be NULL
- LLView* view(*ti);
- if (! view)
- {
- LL_ERRS("LLSideTrayListener") << "LLSideTrayTab '" << tab->getName()
- << "' has a NULL child LLView*" << LL_ENDL;
- }
-
- // The logic we use to decide what "panel" names to return is heavily
- // based on LLSideTray::showPanel(): the function that actually
- // implements the "SideTray.ShowPanel" operation. showPanel(), in
- // turn, depends on LLSideTray::openChildPanel(): when
- // openChildPanel() returns non-NULL, showPanel() stops searching
- // attached and detached LLSideTrayTab tabs.
-
- // For each LLSideTrayTab, openChildPanel() first calls
- // findChildView(panel_name, true). In other words, panel_name need
- // not be a direct LLSideTrayTab child, it's sought recursively.
- // That's why we use (begin|end)TreeDFS() in this loop.
-
- // But this tree_iterator_t loop will actually traverse every widget
- // in every panel. Returning all those names will not help our caller:
- // passing most such names to openChildPanel() would not do what we
- // want. Even though the code suggests that passing ANY valid
- // side-panel widget name to openChildPanel() will open the tab
- // containing that widget, results could get confusing since followup
- // (onOpen()) logic wouldn't be invoked, and showPanel() wouldn't stop
- // searching because openChildPanel() would return NULL.
-
- // We must filter these LLView items, using logic that (sigh!) mirrors
- // openChildPanel()'s own.
-
- // openChildPanel() returns a non-NULL LLPanel* when either:
- // - the LLView is a direct child of an LLSideTrayPanelContainer
- // - the LLView is itself an LLPanel.
- // But as LLSideTrayPanelContainer can directly contain LLView items
- // that are NOT themselves LLPanels (e.g. "sidebar_me" contains an
- // LLButton called "Jump Right Arrow"), we'd better focus only on
- // LLSideTrayPanelContainer children that are themselves LLPanel
- // items. Which means that the second test completely subsumes the
- // first.
- LLPanel* panel(dynamic_cast<LLPanel*>(view));
- if (panel)
- {
- // Maybe it's overkill to construct an LLSD::Map for each panel, but
- // the possibility remains that we might want to deliver more info
- // about each panel than just its name.
- panels.append(LLSDMap("name", panel->getName()));
- }
- }
-
- return LLSDMap("panels", panels);
-}
-
-void LLSideTrayListener::getPanels(const LLSD& event) const
-{
- LLSD reply;
-
- LLSideTray* tray = mGetter();
- // Iterate through the attached tabs.
- LLSD::Integer ord(0);
- for (LLSideTray::child_vector_t::const_iterator
- ati(tray->mTabs.begin()), atend(tray->mTabs.end());
- ati != atend; ++ati)
- {
- // We don't have access to LLSideTrayTab: the class definition is
- // hidden in llsidetray.cpp. But as LLSideTrayTab isa LLPanel, use the
- // LLPanel API. Unfortunately, without the LLSideTrayTab definition,
- // the compiler doesn't even know this LLSideTrayTab* is an LLPanel*.
- // Persuade it.
- LLPanel* tab(tab_cast<LLPanel*>(*ati));
- reply[tab->getName()] = getTabInfo(tab).with("attached", true).with("ord", ord);
- }
-
- // Now iterate over the detached tabs. These can also be opened via
- // SideTray.ShowPanel.
- ord = 0;
- for (LLSideTray::child_vector_t::const_iterator
- dti(tray->mDetachedTabs.begin()), dtend(tray->mDetachedTabs.end());
- dti != dtend; ++dti)
- {
- LLPanel* tab(tab_cast<LLPanel*>(*dti));
- reply[tab->getName()] = getTabInfo(tab).with("attached", false).with("ord", ord);
- }
-
- sendReply(reply, event);
-}
diff --git a/indra/newview/llsidetraylistener.h b/indra/newview/llsidetraylistener.h
deleted file mode 100644
index 51e2137762..0000000000
--- a/indra/newview/llsidetraylistener.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * @file llsidetraylistener.h
- * @author Nat Goodspeed
- * @date 2011-02-15
- * @brief
- *
- * $LicenseInfo:firstyear=2011&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2011, 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$
- */
-
-#if ! defined(LL_LLSIDETRAYLISTENER_H)
-#define LL_LLSIDETRAYLISTENER_H
-
-#include "lleventapi.h"
-#include <boost/function.hpp>
-
-class LLSideTray;
-class LLSD;
-
-class LLSideTrayListener: public LLEventAPI
-{
- typedef boost::function<LLSideTray*()> Getter;
-
-public:
- LLSideTrayListener(const Getter& getter);
-
-private:
- void getCollapsed(const LLSD& event) const;
- void getTabs(const LLSD& event) const;
- void getPanels(const LLSD& event) const;
-
- Getter mGetter;
-};
-
-#endif /* ! defined(LL_LLSIDETRAYLISTENER_H) */
diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 749acea6c1..4511a4806a 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -131,7 +131,6 @@
#include "llsecondlifeurls.h"
#include "llselectmgr.h"
#include "llsky.h"
-#include "llsidetray.h"
#include "llstatview.h"
#include "llstatusbar.h" // sendMoneyBalanceRequest(), owns L$ balance
#include "llsurface.h"
diff --git a/indra/newview/llurldispatcher.cpp b/indra/newview/llurldispatcher.cpp
index 477718d118..f6d7ceeec3 100644
--- a/indra/newview/llurldispatcher.cpp
+++ b/indra/newview/llurldispatcher.cpp
@@ -36,7 +36,6 @@
#include "llfloaterworldmap.h"
#include "llpanellogin.h"
#include "llregionhandle.h"
-#include "llsidetray.h"
#include "llslurl.h"
#include "llstartup.h" // gStartupState
#include "llweb.h"
diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp
index 0b3b8e23a5..174a4d6409 100644
--- a/indra/newview/llviewerfloaterreg.cpp
+++ b/indra/newview/llviewerfloaterreg.cpp
@@ -95,7 +95,6 @@
#include "llfloatersellland.h"
#include "llfloatersettingsdebug.h"
#include "llfloatersidepanelcontainer.h"
-#include "llfloatersidetraytab.h"
#include "llfloatersnapshot.h"
#include "llfloatersounddevices.h"
#include "llfloatertelehub.h"
@@ -276,7 +275,6 @@ void LLViewerFloaterReg::registerFloaters()
LLFloaterReg::add("script_limits", "floater_script_limits.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterScriptLimits>);
LLFloaterReg::add("sell_land", "floater_sell_land.xml", &LLFloaterSellLand::buildFloater);
LLFloaterReg::add("settings_debug", "floater_settings_debug.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSettingsDebug>);
- LLFloaterReg::add("side_bar_tab", "floater_side_bar_tab.xml", &LLFloaterReg::build<LLFloaterSideTrayTab>);
LLFloaterReg::add("sound_devices", "floater_sound_devices.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterSoundDevices>);
LLFloaterReg::add("stats", "floater_stats.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloater>);
LLFloaterReg::add("start_queue", "floater_script_queue.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterRunQueue>);
diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp
index 50fb5a00e4..f8ef81b9f4 100644
--- a/indra/newview/llviewerinventory.cpp
+++ b/indra/newview/llviewerinventory.cpp
@@ -45,7 +45,6 @@
#include "llinventorymodel.h"
#include "llinventorymodelbackgroundfetch.h"
#include "llgesturemgr.h"
-#include "llsidetray.h"
#include "llinventorybridge.h"
#include "llinventorypanel.h"
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 5e781e0e4c..fbfde711a9 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -83,7 +83,6 @@
#include "llrootview.h"
#include "llsceneview.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstatusbar.h"
#include "lltextureview.h"
#include "lltoolcomp.h"
@@ -3348,15 +3347,6 @@ bool enable_sitdown_self()
return isAgentAvatarValid() && !gAgentAvatarp->isSitting() && !gAgent.getFlying();
}
-// Used from the login screen to aid in UI work on side tray
-void handle_show_side_tray()
-{
- LLSideTray* side_tray = LLSideTray::getInstance();
- LLView* root = gViewerWindow->getRootView();
- // automatically removes and re-adds if there already
- root->addChild(side_tray);
-}
-
// Toggle one of "People" panel tabs in side tray.
class LLTogglePanelPeopleTab : public view_listener_t
{
@@ -3367,21 +3357,11 @@ class LLTogglePanelPeopleTab : public view_listener_t
LLSD param;
param["people_panel_tab_name"] = panel_name;
- static LLPanel* friends_panel = NULL;
- static LLPanel* groups_panel = NULL;
- static LLPanel* nearby_panel = NULL;
-
- if (panel_name == "friends_panel")
- {
- return togglePeoplePanel(friends_panel, panel_name, param);
- }
- else if (panel_name == "groups_panel")
- {
- return togglePeoplePanel(groups_panel, panel_name, param);
- }
- else if (panel_name == "nearby_panel")
+ if ( panel_name == "friends_panel"
+ || panel_name == "groups_panel"
+ || panel_name == "nearby_panel")
{
- return togglePeoplePanel(nearby_panel, panel_name, param);
+ return togglePeoplePanel(panel_name, param);
}
else
{
@@ -3389,16 +3369,20 @@ class LLTogglePanelPeopleTab : public view_listener_t
}
}
- static bool togglePeoplePanel(LLPanel* &panel, const std::string& panel_name, const LLSD& param)
+ static bool togglePeoplePanel(const std::string& panel_name, const LLSD& param)
{
+ LLPanel *panel = LLFloaterSidePanelContainer::getPanel("people", panel_name);
if(!panel)
+ return false;
+
+ if (panel->isInVisibleChain())
{
- panel = LLSideTray::getInstance()->getPanel(panel_name);
- if(!panel)
- return false;
+ LLFloaterReg::hideInstance("people");
+ }
+ else
+ {
+ LLFloaterSidePanelContainer::showPanel("people", "panel_people", param) ;
}
-
- LLSideTray::getInstance()->togglePanel(panel, "panel_people", param);
return true;
}
@@ -8067,7 +8051,6 @@ void initialize_menus()
view_listener_t::addMenu(new LLAdvancedCheckDebugKeys(), "Advanced.CheckDebugKeys");
view_listener_t::addMenu(new LLAdvancedToggleDebugWindowProc(), "Advanced.ToggleDebugWindowProc");
view_listener_t::addMenu(new LLAdvancedCheckDebugWindowProc(), "Advanced.CheckDebugWindowProc");
- commit.add("Advanced.ShowSideTray", boost::bind(&handle_show_side_tray));
// Advanced > XUI
commit.add("Advanced.ReloadColorSettings", boost::bind(&LLUIColorTable::loadFromSettings, LLUIColorTable::getInstance()));
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 5665a68add..1c07d36e7e 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -74,7 +74,6 @@
#include "llrecentpeople.h"
#include "llscriptfloater.h"
#include "llselectmgr.h"
-#include "llsidetray.h"
#include "llstartup.h"
#include "llsky.h"
#include "llslurl.h"
@@ -6800,7 +6799,7 @@ void process_covenant_reply(LLMessageSystem* msg, void**)
LLPanelLandCovenant::updateEstateOwnerName(owner_name);
LLFloaterBuyLand::updateEstateOwnerName(owner_name);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
if (panel)
{
panel->updateEstateName(estate_name);
@@ -6934,7 +6933,7 @@ void onCovenantLoadComplete(LLVFS *vfs,
LLPanelLandCovenant::updateCovenantText(covenant_text);
LLFloaterBuyLand::updateCovenantText(covenant_text, asset_uuid);
- LLPanelPlaceProfile* panel = LLSideTray::getInstance()->getPanel<LLPanelPlaceProfile>("panel_place_profile");
+ LLPanelPlaceProfile* panel = LLFloaterSidePanelContainer::getPanel<LLPanelPlaceProfile>("places", "panel_place_profile");
if (panel)
{
panel->updateCovenantText(covenant_text);
diff --git a/indra/newview/llviewertexteditor.cpp b/indra/newview/llviewertexteditor.cpp
index b308e952ad..0a9fae68a6 100644
--- a/indra/newview/llviewertexteditor.cpp
+++ b/indra/newview/llviewertexteditor.cpp
@@ -51,7 +51,6 @@
#include "llpreviewtexture.h"
#include "llscrollbar.h"
#include "llscrollcontainer.h"
-#include "llsidetray.h"
#include "lltooldraganddrop.h"
#include "lltooltip.h"
#include "lltrans.h"
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 6c9ee17a76..149f9893d7 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -133,7 +133,6 @@
#include "llpreviewtexture.h"
#include "llprogressview.h"
#include "llresmgr.h"
-#include "llsidetray.h"
#include "llselectmgr.h"
#include "llrootview.h"
#include "llrendersphere.h"
@@ -1773,7 +1772,6 @@ void LLViewerWindow::initBase()
// placeholder widget that controls where "world" is rendered
mWorldViewPlaceholder = main_view->getChildView("world_view_rect")->getHandle();
- mNonSideTrayView = main_view->getChildView("non_side_tray_view")->getHandle();
mFloaterViewHolder = main_view->getChildView("floater_view_holder")->getHandle();
mPopupView = main_view->getChild<LLPopupView>("popup_holder");
mHintHolder = main_view->getChild<LLView>("hint_holder")->getHandle();
@@ -1934,22 +1932,6 @@ void LLViewerWindow::initWorldUI()
panel_ssf_container->addChild(panel_stand_stop_flying);
panel_ssf_container->setVisible(TRUE);
- // put sidetray in container
- LLPanel* side_tray_container = getRootView()->getChild<LLPanel>("side_tray_container");
- LLSideTray* sidetrayp = LLSideTray::getInstance();
- sidetrayp->setShape(side_tray_container->getLocalRect());
- // don't follow right edge to avoid spurious resizes, since we are using a fixed width layout
- sidetrayp->setFollows(FOLLOWS_LEFT|FOLLOWS_TOP|FOLLOWS_BOTTOM);
- side_tray_container->addChild(sidetrayp);
- side_tray_container->setVisible(FALSE);
-
- // put sidetray buttons in their own panel
- LLPanel* buttons_panel = sidetrayp->getButtonsPanel();
- LLPanel* buttons_panel_container = getRootView()->getChild<LLPanel>("side_bar_tabs");
- buttons_panel->setShape(buttons_panel_container->getLocalRect());
- buttons_panel->setFollowsAll();
- buttons_panel_container->addChild(buttons_panel);
-
// Load and make the toolbars visible
// Note: we need to load the toolbars only *after* the user is logged in and IW
if (gToolBarView)
@@ -3310,9 +3292,6 @@ void LLViewerWindow::updateKeyboardFocus()
// make sure floater visible order is in sync with tab order
gFloaterView->syncFloaterTabOrder();
}
-
- if(LLSideTray::instanceCreated())//just getInstance will create sidetray. we don't want this
- LLSideTray::getInstance()->highlightFocused();
}
static LLFastTimer::DeclareTimer FTM_UPDATE_WORLD_VIEW("Update World View");
@@ -3336,12 +3315,6 @@ void LLViewerWindow::updateWorldViewRect(bool use_full_window)
new_world_rect.mTop = llround((F32)new_world_rect.mTop * mDisplayScale.mV[VY]);
}
- if (gSavedSettings.getBOOL("SidebarCameraMovement") == FALSE)
- {
- // use right edge of window, ignoring sidebar
- new_world_rect.mRight = mWindowRectRaw.mRight;
- }
-
if (mWorldViewRectRaw != new_world_rect)
{
mWorldViewRectRaw = new_world_rect;
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 47e0fdeab1..872eb12753 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -282,7 +282,6 @@ public:
void updateKeyboardFocus();
void updateWorldViewRect(bool use_full_window=false);
- LLView* getNonSideTrayView() { return mNonSideTrayView.get(); }
LLView* getFloaterViewHolder() { return mFloaterViewHolder.get(); }
LLView* getToolBarHolder() { return mToolBarHolder.get(); }
LLView* getHintHolder() { return mHintHolder.get(); }
@@ -445,7 +444,6 @@ protected:
std::string mInitAlert; // Window / GL initialization requires an alert
LLHandle<LLView> mWorldViewPlaceholder; // widget that spans the portion of screen dedicated to rendering the 3d world
- LLHandle<LLView> mNonSideTrayView; // parent of world view + bottom bar, etc...everything but the side tray
LLHandle<LLView> mFloaterViewHolder; // container for floater_view
LLHandle<LLView> mToolBarHolder; // container for toolbars
LLHandle<LLView> mHintHolder; // container for hints
diff --git a/indra/newview/llwearable.cpp b/indra/newview/llwearable.cpp
index 276e8f462d..d8aa0b7d5c 100644
--- a/indra/newview/llwearable.cpp
+++ b/indra/newview/llwearable.cpp
@@ -37,7 +37,6 @@
#include "llinventorymodel.h"
#include "llinventoryobserver.h"
#include "llsidepanelappearance.h"
-#include "llsidetray.h"
#include "lltexlayer.h"
#include "lltexglobalcolor.h"
#include "lltrans.h"
diff --git a/indra/newview/llworldview.cpp b/indra/newview/llworldview.cpp
deleted file mode 100644
index f5dc2a5290..0000000000
--- a/indra/newview/llworldview.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-/**
- * @file llworldview.cpp
- * @brief LLWorldView class implementation
- *
- * $LicenseInfo:firstyear=2001&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$
- */
-
-#include "llviewerprecompiledheaders.h"
-
-#include "llworldview.h"
-
-#include "llviewercontrol.h"
-#include "llsidetray.h"
-/////////////////////////////////////////////////////
-// LLFloaterView
-
-static LLDefaultChildRegistry::Register<LLWorldView> r("world_view");
-
-LLWorldView::LLWorldView(const Params& p)
-: LLUICtrl (p)
-{
- gSavedSettings.getControl("SidebarCameraMovement")->getSignal()->connect(boost::bind(&LLWorldView::toggleSidebarCameraMovement, this, _2));
-}
-
-void LLWorldView::reshape(S32 width, S32 height, BOOL called_from_parent)
-{
- //if (FALSE == gSavedSettings.getBOOL("SidebarCameraMovement") )
- //{
- // LLView* main_view = LLUI::getRootView()->findChild<LLView>("main_view");
- // if(main_view)
- // {
- // width = main_view->getRect().getWidth();
- // }
- //}
-
- LLUICtrl::reshape(width, height, called_from_parent);
-}
-void LLWorldView::toggleSidebarCameraMovement(const LLSD::Boolean& new_visibility)
-{
- reshape(getParent()->getRect().getWidth(),getRect().getHeight());
-}
-
diff --git a/indra/newview/skins/default/xui/en/floater_people.xml b/indra/newview/skins/default/xui/en/floater_people.xml
index 13e0738e52..4dd3a2f0e1 100644
--- a/indra/newview/skins/default/xui/en/floater_people.xml
+++ b/indra/newview/skins/default/xui/en/floater_people.xml
@@ -1,21 +1,23 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
+
<floater
- can_close="true"
- can_resize="true"
- height="570"
- help_topic="sidebar_people"
- min_width="333"
- min_height="440"
- name="floater_people"
- save_rect="true"
- save_visibility="true"
- title="People"
- width="333" >
+ can_close="true"
+ can_resize="true"
+ height="570"
+ help_topic="sidebar_people"
+ min_height="440"
+ min_width="333"
+ layout="topleft"
+ name="floater_people"
+ save_rect="true"
+ single_instance="true"
+ title="PEOPLE"
+ width="333">
<panel_container
+ default_panel_name="panel_people"
follows="all"
height="570"
name="main_panel"
- default_panel_name="panel_people"
width="333">
<panel
class="panel_people"
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index 6ece01b2ba..d8f593715f 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -90,14 +90,6 @@
top="0"
visible="false"
width="1024"/>
- <panel follows="right|top|bottom"
- height="500"
- mouse_opaque="false"
- name="side_bar_tabs"
- right="500"
- tab_stop="false"
- top="0"
- width="32"/>
<panel bottom="500"
follows="left|right|bottom"
height="25"
@@ -116,17 +108,6 @@
visible="false"/>
</layout_stack>
</layout_panel>
- <!-- side tray -->
- <layout_panel auto_resize="false"
- follows="top|bottom"
- height="500"
- min_width="333"
- mouse_opaque="false"
- tab_stop="false"
- name="side_tray_container"
- user_resize="false"
- visible="false"
- width="333"/>
</layout_stack>
<panel top="0"
follows="all"
diff --git a/indra/newview/skins/default/xui/en/menu_login.xml b/indra/newview/skins/default/xui/en/menu_login.xml
index bb58dd500f..80e310a873 100644
--- a/indra/newview/skins/default/xui/en/menu_login.xml
+++ b/indra/newview/skins/default/xui/en/menu_login.xml
@@ -93,14 +93,6 @@
parameter="ui_preview" />
</menu_item_call>
<menu_item_separator />
- <!-- Broken
- <menu_item_call
- label="Show Side Tray"
- name="Show Side Tray">
- <menu_item_call.on_click
- function="Advanced.ShowSideTray" />
- </menu_item_call>
- -->
<menu
create_jump_keys="true"
label="UI Tests"
diff --git a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
index 29eeb93ac1..b452f96e7a 100644
--- a/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_friends_view_sort.xml
@@ -42,6 +42,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" parameter="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Friends.ViewSort.Action" parameter="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
index 65bd2793b6..614dd693c5 100644
--- a/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_nearby_view_sort.xml
@@ -52,6 +52,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Nearby.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
index 0634e3bd3b..485a5a658c 100644
--- a/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
+++ b/indra/newview/skins/default/xui/en/menu_people_recent_view_sort.xml
@@ -34,6 +34,6 @@
</menu_item_check>
<menu_item_separator layout="topleft" />
<menu_item_call name="show_blocked_list" label="Show Blocked Residents &amp; Objects">
- <menu_item_call.on_click function="SideTray.ShowPanel" userdata="panel_block_list_sidetray" />
+ <menu_item_call.on_click function="People.Recent.ViewSort.Action" userdata="panel_block_list_sidetray" />
</menu_item_call>
</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_move.xml b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
index 1a8aae7f91..c131649fc8 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_move.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_move.xml
@@ -86,16 +86,6 @@
name="appearance_camera_movement"
tool_tip="Use automatic camera positioning while in edit mode"
width="242" />
- <check_box
- control_name="SidebarCameraMovement"
- follows="left|top"
- height="16"
- initial_value="true"
- label="Sidebar"
- layout="topleft"
- name="appearance_sidebar_positioning"
- tool_tip="Use automatic camera positioning for sidebar"
- width="242" />
<icon
follows="left|top"
height="18"