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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file lloutputmonitorctrl.h
  3.  * @brief LLOutputMonitorCtrl base class
  4.  *
  5.  * $LicenseInfo:firstyear=2001&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2001-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. #ifndef LL_LLOUTPUTMONITORCTRL_H
  33. #define LL_LLOUTPUTMONITORCTRL_H
  34. #include "v4color.h"
  35. #include "llview.h"
  36. #include "llmutelist.h"
  37. #include "llspeakingindicatormanager.h"
  38. class LLTextBox;
  39. class LLUICtrlFactory;
  40. //
  41. // Classes
  42. //
  43. class LLOutputMonitorCtrl
  44. : public LLView, public LLSpeakingIndicator, LLMuteListObserver
  45. {
  46. public:
  47. struct Params : public LLInitParam::Block<Params, LLView::Params>
  48. {
  49. Optional<bool> draw_border;
  50. Mandatory<LLUIImage*> image_mute,
  51. image_off,
  52. image_on,
  53. image_level_1,
  54. image_level_2,
  55. image_level_3;
  56. Optional<bool> auto_update;
  57. Optional<LLUUID> speaker_id;
  58. Params();
  59. };
  60. protected:
  61. bool mBorder;
  62. LLOutputMonitorCtrl(const Params&);
  63. friend class LLUICtrlFactory;
  64. public:
  65. virtual ~LLOutputMonitorCtrl();
  66. // llview overrides
  67. virtual void draw();
  68. void setPower(F32 val);
  69. F32 getPower(F32 val) const { return mPower; }
  70. bool getIsMuted() const { return mIsMuted; }
  71. void setIsMuted(bool val) { mIsMuted = val; }
  72. // For the current user, need to know the PTT state to show
  73. // correct button image.
  74. void setIsAgentControl(bool val) { mIsAgentControl = val; }
  75. void setIsTalking(bool val) { mIsTalking = val; }
  76. void setSpeakerId(const LLUUID& speaker_id);
  77. //called by mute list
  78. virtual void onChange();
  79. /**
  80.  * Implementation of LLSpeakingIndicator interface.
  81.  * Behavior is implemented via changing visibility.
  82.  *
  83.  * If instance is in visible chain now (all parents are visible) it changes visibility 
  84.  * and notify parent about this.
  85.  *
  86.  * Otherwise it marks an instance as dirty and stores necessary visibility.
  87.  * It will be applied in next draw and parent will be notified.
  88.  */
  89. virtual void switchIndicator(bool switch_on);
  90. private:
  91. /**
  92.  * Notifies parent about changed visibility.
  93.  *
  94.  * Passes LLSD with "visibility_changed" => <current visibility> value.
  95.  * For now it is processed by LLAvatarListItem to update (reshape) its children.
  96.  * Implemented fo complete EXT-3976
  97.  */
  98. void notifyParentVisibilityChanged();
  99. //static LLColor4 sColorMuted;
  100. //static LLColor4 sColorNormal;
  101. //static LLColor4 sColorOverdriven;
  102. static LLColor4 sColorBound;
  103. //static S32 sRectsNumber;
  104. //static F32 sRectWidthRatio;
  105. //static F32 sRectHeightRatio;
  106. F32 mPower;
  107. bool mIsAgentControl;
  108. bool mIsMuted;
  109. bool mIsTalking;
  110. LLPointer<LLUIImage> mImageMute;
  111. LLPointer<LLUIImage> mImageOff;
  112. LLPointer<LLUIImage> mImageOn;
  113. LLPointer<LLUIImage> mImageLevel1;
  114. LLPointer<LLUIImage> mImageLevel2;
  115. LLPointer<LLUIImage> mImageLevel3;
  116. /** whether to deal with gVoiceClient directly */
  117. bool mAutoUpdate;
  118. /** uuid of a speaker being monitored */
  119. LLUUID mSpeakerId;
  120. /** indicates if the instance is dirty and should notify parent */
  121. bool mIsSwitchDirty;
  122. bool mShouldSwitchOn;
  123. };
  124. #endif