diff options
author | Oz Linden <oz@lindenlab.com> | 2010-12-04 09:14:58 -0500 |
---|---|---|
committer | Oz Linden <oz@lindenlab.com> | 2010-12-04 09:14:58 -0500 |
commit | efa42a6aab6d3ada198072c0e2be2b7d9b4e1eb5 (patch) | |
tree | 39a949e1570c3524c8560522b693328fc7d9afbf /indra/newview/llsidetray.h | |
parent | eed7b7201188e01a452c7f4c511c0cb157dc7a5f (diff) | |
parent | 7549df0eaf347e9f490f9cfaf4950dd623a08237 (diff) |
merge up to viewer-development
Diffstat (limited to 'indra/newview/llsidetray.h')
-rw-r--r-- | indra/newview/llsidetray.h | 52 |
1 files changed, 35 insertions, 17 deletions
diff --git a/indra/newview/llsidetray.h b/indra/newview/llsidetray.h index 248def8e3d..3c572dde95 100644 --- a/indra/newview/llsidetray.h +++ b/indra/newview/llsidetray.h @@ -40,6 +40,8 @@ class LLSideTray : public LLPanel, private LLDestroyClass<LLSideTray> { friend class LLUICtrlFactory; friend class LLDestroyClass<LLSideTray>; + friend class LLSideTrayTab; + friend class LLSideTrayButton; public: LOG_CLASS(LLSideTray); @@ -76,9 +78,12 @@ public: // interface functions /** - * Select tab with specific name and set it active - */ - bool selectTabByName (const std::string& name); + * 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 @@ -106,10 +111,21 @@ public: LLPanel* getPanel (const std::string& panel_name); LLPanel* getActivePanel (); bool isPanelActive (const std::string& panel_name); + /* - * get currently active tab + * get the panel of given type T (don't show it or do anything else with it) */ - const LLSideTrayTab* getActiveTab() const { return mActiveTab; } + 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 @@ -119,8 +135,10 @@ public: /* * expand SideBar + * + * @param open_active Whether to call onOpen() for the active tab. */ - void expandSideBar (); + void expandSideBar(bool open_active = true); /** @@ -142,32 +160,28 @@ public: virtual BOOL postBuild(); - void onTabButtonClick(std::string name); - void onToggleCollapse(); - - 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 handleMouseDown (S32 x, S32 y, MASK mask); void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE); - void processTriState (); - + void updateSidetrayVisibility(); commit_signal_t& getCollapseSignal() { return mCollapseSignal; } void handleLoginComplete(); - LLSideTrayTab* getTab (const std::string& name); - 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 (); LLButton* createButton (const std::string& name,const std::string& image,const std::string& tooltip, @@ -175,11 +189,15 @@ protected: 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() |