llsidetraypanelcontainer.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:3k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2. * @file llsidetraypanelcontainer.h
  3. * @brief LLSideTrayPanelContainer class declaration
  4. *
  5. * $LicenseInfo:firstyear=2009&license=viewergpl$
  6. * Copyright (c) 2009-2010, Linden Research, Inc.
  7. * Second Life Viewer Source Code
  8. * The source code in this file ("Source Code") is provided by Linden Lab
  9. * to you under the terms of the GNU General Public License, version 2.0
  10. * ("GPL"), unless you have obtained a separate licensing agreement
  11. * ("Other License"), formally executed by you and Linden Lab.  Terms of
  12. * the GPL can be found in doc/GPL-license.txt in this distribution, or
  13. * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  14. * There are special exceptions to the terms and conditions of the GPL as
  15. * it is applied to this Source Code. View the full text of the exception
  16. * in the file doc/FLOSS-exception.txt in this software distribution, or
  17. * online at
  18. * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  19. * By copying, modifying or distributing this software, you acknowledge
  20. * that you have read and understood your obligations described above,
  21. * and agree to abide by those obligations.
  22. * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  23. * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  24. * COMPLETENESS OR PERFORMANCE.
  25. * $/LicenseInfo$
  26. */
  27. #ifndef LL_LLSIDETRAY_PANEL_CONTAINER_H
  28. #define LL_LLSIDETRAY_PANEL_CONTAINER_H
  29. #include "lltabcontainer.h"
  30. /**
  31. * LLSideTrayPanelContainer class acts like LLTabContainer with invisible tabs.
  32. * It is designed to make panel switching easier, avoid setVisible(TRUE) setVisible(FALSE)
  33. * calls and related workarounds.
  34. * use onOpen to open sub panel, pass the name of panel to open
  35. * in key[PARAM_SUB_PANEL_NAME].
  36. * LLSideTrayPanelContainer also implements panel navigation history - it allows to 
  37. * open previous or next panel if navigation history is available(after user 
  38. * has opened two or more panels). *NOTE - only back navigation is implemented so far.
  39. */
  40. class LLSideTrayPanelContainer : public LLTabContainer
  41. {
  42. public:
  43. struct Params : public LLInitParam::Block<Params, LLTabContainer::Params>
  44. {
  45. Optional<std::string> default_panel_name;
  46. Params();
  47. };
  48. /**
  49. * Opens sub panel
  50. * @param key - params to be passed to panel, use key[PARAM_SUB_PANEL_NAME]
  51. * to specify panel name to be opened.
  52. */
  53. /*virtual*/ void onOpen(const LLSD& key);
  54. /**
  55. * Opens previous panel from panel navigation history.
  56. */
  57. void openPreviousPanel();
  58. /**
  59. * Overrides LLTabContainer::handleKeyHere to disable panel switch on 
  60. * Alt + Left/Right button press.
  61. */
  62. BOOL handleKeyHere(KEY key, MASK mask);
  63. /**
  64. * Name of parameter that stores panel name to open.
  65. */
  66. static std::string PARAM_SUB_PANEL_NAME;
  67. protected:
  68. LLSideTrayPanelContainer(const Params& p);
  69. friend class LLUICtrlFactory;
  70. /**
  71. * std::string - name of panel
  72. * S32 - index of previous panel
  73. * *NOTE - no forward navigation implemented yet
  74. */
  75. typedef std::map<std::string, S32> panel_navigation_history_t;
  76. // Navigation history
  77. panel_navigation_history_t mPanelHistory;
  78. std::string mDefaultPanelName;
  79. };
  80. #endif //LL_LLSIDETRAY_PANEL_CONTAINER_H