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

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llpanelnearbymedia.h
  3.  * @brief Management interface for muting and controlling nearby media
  4.  *
  5.  * $LicenseInfo:firstyear=2005&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2005-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_LLPANELNEARBYMEDIA_H
  33. #define LL_LLPANELNEARBYMEDIA_H
  34. #include "llpanel.h"
  35. class LLPanelNearbyMedia;
  36. class LLButton;
  37. class LLScrollListCtrl;
  38. class LLSlider;
  39. class LLSliderCtrl;
  40. class LLCheckBoxCtrl;
  41. class LLTextBox;
  42. class LLComboBox;
  43. class LLViewerMediaImpl;
  44. class LLPanelNearByMedia : public LLPanel
  45. {
  46. public:
  47. /*virtual*/ BOOL postBuild();
  48. /*virtual*/ void draw();
  49. /*virtual*/ void onMouseEnter(S32 x, S32 y, MASK mask);
  50. /*virtual*/ void onMouseLeave(S32 x, S32 y, MASK mask);
  51. /*virtual*/ void handleVisibilityChange ( BOOL new_visibility );
  52. /*virtual*/ void onTopLost ();
  53. /*virtual*/ void reshape(S32 width, S32 height, BOOL called_from_parent);
  54. // this is part of the nearby media *dialog* so we can track whether
  55. // the user *implicitly* wants audio on or off via their *explicit*
  56. // interaction with our buttons.
  57. bool getParcelAudioAutoStart();
  58. LLPanelNearByMedia();
  59. virtual ~LLPanelNearByMedia();
  60. private:
  61. enum ColumnIndex {
  62. CHECKBOX_COLUMN = 0,
  63. PROXIMITY_COLUMN = 1,
  64. VISIBILITY_COLUMN = 2,
  65. CLASS_COLUMN = 3,
  66. NAME_COLUMN = 4,
  67. DEBUG_COLUMN = 5
  68. };
  69. // Media "class" enumeration
  70. enum MediaClass {
  71. MEDIA_CLASS_ALL = 0,
  72. MEDIA_CLASS_FOCUSED = 1,
  73. MEDIA_CLASS_WITHIN_PARCEL = 2,
  74. MEDIA_CLASS_OUTSIDE_PARCEL = 3,
  75. MEDIA_CLASS_ON_OTHERS = 4
  76. };
  77. // Add/remove an LLViewerMediaImpl to/from the list
  78. LLScrollListItem* addListItem(const LLUUID &id);
  79. void updateListItem(LLScrollListItem* item, LLViewerMediaImpl* impl);
  80. void updateListItem(LLScrollListItem* item,
  81. const std::string &item_name,
  82. const std::string &item_tooltip,
  83. S32 proximity,
  84. bool is_disabled,
  85. bool has_media,
  86. bool is_time_based_and_playing,
  87. MediaClass media_class,
  88. const std::string &debug_str);
  89. void removeListItem(const LLUUID &id);
  90. // Refresh the list in the UI
  91. void refreshList();
  92. void refreshParcelItems();
  93. // UI Callbacks 
  94. void onClickEnableAll();
  95. void onClickDisableAll();
  96. void onClickEnableParcelMedia();
  97. void onClickDisableParcelMedia();
  98. void onClickMuteParcelMedia();
  99. void onParcelMediaVolumeSlider();
  100. void onClickParcelMediaPlay();
  101. void onClickParcelMediaStop();
  102. void onClickParcelMediaPause();
  103. void onClickParcelAudioPlay();
  104. void onClickParcelAudioStop();
  105. void onClickParcelAudioStart();
  106. void onClickParcelAudioPause();
  107. void onCheckAutoPlay();
  108. void onAdvancedButtonClick();
  109. void onMoreLess();
  110. void onCheckItem(LLUICtrl* ctrl, const LLUUID &row_id);
  111. static void onZoomMedia(void* user_data);
  112. private:
  113. bool setDisabled(const LLUUID &id, bool disabled);
  114. static void getNameAndUrlHelper(LLViewerMediaImpl* impl, std::string& name, std::string & url, const std::string &defaultName);
  115. void updateColumns();
  116. bool shouldShow(LLViewerMediaImpl* impl);
  117. void showBasicControls(bool playing, bool include_zoom, bool is_zoomed);
  118. void showTimeBasedControls(bool playing, bool include_zoom, bool is_zoomed, bool muted, F32 volume);
  119. void showDisabledControls();
  120. void updateControls();
  121. void onClickSelectedMediaStop();
  122. void onClickSelectedMediaPlay();
  123. void onClickSelectedMediaPause();
  124. void onClickSelectedMediaMute();
  125. void onCommitSelectedMediaVolume();
  126. void onClickSelectedMediaZoom();
  127. void onClickSelectedMediaUnzoom();
  128. LLUICtrl* mNearbyMediaPanel;
  129. LLTextBox* mItemCountText;
  130. LLScrollListCtrl* mMediaList;
  131. LLUICtrl* mEnableAllCtrl;
  132. LLUICtrl* mDisableAllCtrl;
  133. LLComboBox* mShowCtrl;
  134. // Dynamic (selection-dependent) controls
  135. LLUICtrl* mStopCtrl;
  136. LLUICtrl* mPlayCtrl;
  137. LLUICtrl* mPauseCtrl;
  138. LLUICtrl* mMuteCtrl;
  139. LLUICtrl* mVolumeSliderCtrl;
  140. LLUICtrl* mZoomCtrl;
  141. LLUICtrl* mUnzoomCtrl;
  142. LLSlider* mVolumeSlider;
  143. LLButton* mMuteBtn;
  144. bool mAllMediaDisabled;
  145. bool mDebugInfoVisible;
  146. bool mParcelAudioAutoStart;
  147. std::string mEmptyNameString;
  148. std::string mPlayingString;
  149. std::string mParcelMediaName;
  150. std::string mParcelAudioName;
  151. LLRect mMoreRect;
  152. LLRect mLessRect;
  153. LLFrameTimer mHoverTimer;
  154. LLScrollListItem* mParcelMediaItem;
  155. LLScrollListItem* mParcelAudioItem;
  156. };
  157. #endif // LL_LLPANELNEARBYMEDIA_H