228 lines
5.8 KiB
C++
228 lines
5.8 KiB
C++
/**
|
|
* @file llpanelmediahud.h
|
|
* @brief Media hud panel
|
|
*
|
|
* $LicenseInfo:firstyear=2003&license=viewergpl$
|
|
*
|
|
* Copyright (c) 2003-2009, Linden Research, Inc.
|
|
*
|
|
* Second Life Viewer Source Code
|
|
* The source code in this file ("Source Code") is provided by Linden Lab
|
|
* to you under the terms of the GNU General Public License, version 2.0
|
|
* ("GPL"), unless you have obtained a separate licensing agreement
|
|
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
|
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
|
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
|
*
|
|
* There are special exceptions to the terms and conditions of the GPL as
|
|
* it is applied to this Source Code. View the full text of the exception
|
|
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
|
* online at
|
|
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
|
*
|
|
* By copying, modifying or distributing this software, you acknowledge
|
|
* that you have read and understood your obligations described above,
|
|
* and agree to abide by those obligations.
|
|
*
|
|
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
|
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
|
* COMPLETENESS OR PERFORMANCE.
|
|
* $/LicenseInfo$
|
|
*/
|
|
|
|
#ifndef LL_PANELPRIMMEDIACONTROLS_H
|
|
#define LL_PANELPRIMMEDIACONTROLS_H
|
|
|
|
#include "llpanel.h"
|
|
#include "llviewermedia.h"
|
|
#include "llnotificationptr.h"
|
|
#include "llcoord.h"
|
|
|
|
class LLButton;
|
|
class LLIconCtrl;
|
|
class LLLayoutStack;
|
|
class LLProgressBar;
|
|
class LLSliderCtrl;
|
|
class LLViewerMediaImpl;
|
|
|
|
class LLPanelPrimMediaControls : public LLPanel
|
|
{
|
|
public:
|
|
LLPanelPrimMediaControls();
|
|
virtual ~LLPanelPrimMediaControls();
|
|
/*virtual*/ BOOL postBuild();
|
|
virtual void draw();
|
|
virtual BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
|
|
|
virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask);
|
|
virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask);
|
|
virtual BOOL handleKeyHere(KEY key, MASK mask);
|
|
|
|
void updateShape();
|
|
bool isMouseOver();
|
|
|
|
void showNotification(LLNotificationPtr notify);
|
|
void hideNotification();
|
|
|
|
|
|
enum EZoomLevel
|
|
{
|
|
ZOOM_NONE = 0,
|
|
ZOOM_FAR,
|
|
ZOOM_MEDIUM,
|
|
ZOOM_NEAR
|
|
};
|
|
|
|
EZoomLevel getZoomLevel() const { return mCurrentZoom; }
|
|
void nextZoomLevel();
|
|
void resetZoomLevel(bool reset_camera = true);
|
|
void close();
|
|
|
|
LLHandle<LLPanelPrimMediaControls> getHandle() const { return mPanelHandle; }
|
|
void setMediaFace(LLPointer<LLViewerObject> objectp, S32 face, viewer_media_t media_impl, LLVector3 pick_normal = LLVector3::zero);
|
|
|
|
|
|
static const EZoomLevel kZoomLevels[];
|
|
static const int kNumZoomLevels;
|
|
|
|
enum EScrollDir
|
|
{
|
|
SCROLL_UP = 0,
|
|
SCROLL_DOWN,
|
|
SCROLL_LEFT,
|
|
SCROLL_RIGHT,
|
|
SCROLL_NONE
|
|
};
|
|
|
|
private:
|
|
void onClickClose();
|
|
void onClickBack();
|
|
void onClickForward();
|
|
void onClickHome();
|
|
void onClickOpen();
|
|
void onClickReload();
|
|
void onClickPlay();
|
|
void onClickPause();
|
|
void onClickStop();
|
|
void onClickZoom();
|
|
void onClickSkipBack();
|
|
void onClickSkipForward();
|
|
void onClickMediaStop();
|
|
void onCommitURL();
|
|
|
|
void updateZoom();
|
|
void setCurrentURL();
|
|
void onCommitSlider();
|
|
|
|
void onCommitVolumeUp();
|
|
void onCommitVolumeDown();
|
|
void onCommitVolumeSlider();
|
|
void onToggleMute();
|
|
void showVolumeSlider();
|
|
void hideVolumeSlider();
|
|
bool shouldVolumeSliderBeVisible();
|
|
|
|
static void onScrollUp(void* user_data);
|
|
static void onScrollUpHeld(void* user_data);
|
|
static void onScrollLeft(void* user_data);
|
|
static void onScrollLeftHeld(void* user_data);
|
|
static void onScrollRight(void* user_data);
|
|
static void onScrollRightHeld(void* user_data);
|
|
static void onScrollDown(void* user_data);
|
|
static void onScrollDownHeld(void* user_data);
|
|
static void onScrollStop(void* user_data);
|
|
|
|
static void onInputURL(LLFocusableElement* caller, void *userdata);
|
|
static bool hasControlsPermission(LLViewerObject *obj, const LLMediaEntry *media_entry);
|
|
|
|
void focusOnTarget();
|
|
|
|
LLViewerMediaImpl* getTargetMediaImpl();
|
|
LLViewerObject* getTargetObject();
|
|
LLPluginClassMedia* getTargetMediaPlugin();
|
|
|
|
private:
|
|
|
|
void clearFaceOnFade();
|
|
|
|
void onMouselookModeIn();
|
|
|
|
LLView *mMediaRegion;
|
|
LLUICtrl *mBackCtrl;
|
|
LLUICtrl *mFwdCtrl;
|
|
LLUICtrl *mReloadCtrl;
|
|
LLUICtrl *mPlayCtrl;
|
|
LLUICtrl *mPauseCtrl;
|
|
LLUICtrl *mStopCtrl;
|
|
LLUICtrl *mMediaStopCtrl;
|
|
LLUICtrl *mHomeCtrl;
|
|
LLUICtrl *mUnzoomCtrl;
|
|
LLUICtrl *mOpenCtrl;
|
|
LLUICtrl *mSkipBackCtrl;
|
|
LLUICtrl *mSkipFwdCtrl;
|
|
LLUICtrl *mZoomCtrl;
|
|
LLPanel *mMediaProgressPanel;
|
|
LLProgressBar *mMediaProgressBar;
|
|
LLUICtrl *mMediaAddressCtrl;
|
|
LLUICtrl *mMediaAddress;
|
|
LLUICtrl *mMediaPlaySliderPanel;
|
|
LLUICtrl *mMediaPlaySliderCtrl;
|
|
LLUICtrl *mVolumeCtrl;
|
|
LLButton *mMuteBtn;
|
|
LLSliderCtrl *mVolumeSliderCtrl;
|
|
LLIconCtrl *mWhitelistIcon;
|
|
LLIconCtrl *mSecureLockIcon;
|
|
LLLayoutStack *mMediaControlsStack;
|
|
LLUICtrl *mLeftBookend;
|
|
LLUICtrl *mRightBookend;
|
|
LLUIImage* mBackgroundImage;
|
|
LLUIImage* mVolumeSliderBackgroundImage;
|
|
F32 mSkipStep;
|
|
S32 mMinWidth;
|
|
S32 mMinHeight;
|
|
F32 mZoomNearPadding;
|
|
F32 mZoomMediumPadding;
|
|
F32 mZoomFarPadding;
|
|
S32 mTopWorldViewAvoidZone;
|
|
|
|
LLUICtrl *mMediaPanelScroll;
|
|
LLButton *mScrollUpCtrl;
|
|
LLButton *mScrollLeftCtrl;
|
|
LLButton *mScrollRightCtrl;
|
|
LLButton *mScrollDownCtrl;
|
|
|
|
bool mPauseFadeout;
|
|
bool mUpdateSlider;
|
|
bool mClearFaceOnFade;
|
|
bool mHideImmediately;
|
|
|
|
LLMatrix4 mLastCameraMat;
|
|
EZoomLevel mCurrentZoom;
|
|
EScrollDir mScrollState;
|
|
LLCoordWindow mLastCursorPos;
|
|
LLFrameTimer mInactivityTimer;
|
|
LLFrameTimer mFadeTimer;
|
|
F32 mInactiveTimeout;
|
|
F32 mControlFadeTime;
|
|
LLRootHandle<LLPanelPrimMediaControls> mPanelHandle;
|
|
F32 mAlpha;
|
|
std::string mCurrentURL;
|
|
std::string mPreviousURL;
|
|
F64 mCurrentRate;
|
|
F64 mMovieDuration;
|
|
|
|
LLUUID mTargetObjectID;
|
|
S32 mTargetObjectFace;
|
|
LLUUID mTargetImplID;
|
|
LLVector3 mTargetObjectNormal;
|
|
|
|
LLUUID mZoomObjectID;
|
|
S32 mZoomObjectFace;
|
|
|
|
S32 mVolumeSliderVisible;
|
|
|
|
LLNotificationPtr mActiveNotification;
|
|
};
|
|
|
|
#endif // LL_PANELMEDIAHUD_H
|