235 lines
6.3 KiB
C++
235 lines
6.3 KiB
C++
/**
|
|
* @file llpanelprimmediacontrols.h
|
|
* @brief Pop-up media controls panel
|
|
*
|
|
* $LicenseInfo:firstyear=2003&license=viewerlgpl$
|
|
* Second Life Viewer Source Code
|
|
* Copyright (C) 2010, Linden Research, Inc.
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation;
|
|
* version 2.1 of the License only.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*
|
|
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
|
* $/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 LLWindowShade;
|
|
class LLLineEditor;
|
|
|
|
class LLPanelPrimMediaControls : public LLPanel
|
|
{
|
|
public:
|
|
LLPanelPrimMediaControls();
|
|
virtual ~LLPanelPrimMediaControls();
|
|
bool postBuild() override;
|
|
void draw() override;
|
|
bool handleScrollWheel(S32 x, S32 y, S32 clicks) override;
|
|
bool handleScrollHWheel(S32 x, S32 y, S32 clicks) override;
|
|
|
|
bool handleMouseDown(S32 x, S32 y, MASK mask) override;
|
|
bool handleMouseUp(S32 x, S32 y, MASK mask) override;
|
|
bool handleKeyHere(KEY key, MASK mask) override;
|
|
|
|
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 onMediaPlaySliderCtrlMouseDown();
|
|
void onMediaPlaySliderCtrlMouseUp();
|
|
|
|
void onCommitVolumeUp();
|
|
void onCommitVolumeDown();
|
|
void onCommitVolumeSlider();
|
|
void onToggleMute();
|
|
void showVolumeSlider();
|
|
void hideVolumeSlider();
|
|
bool shouldVolumeSliderBeVisible();
|
|
|
|
bool isZoomDistExceeding();
|
|
|
|
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;
|
|
LLLineEditor *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;
|
|
LLWindowShade* mWindowShade;
|
|
F32 mSkipStep;
|
|
S32 mMinWidth;
|
|
S32 mMinHeight;
|
|
F32 mZoomNearPadding;
|
|
F32 mZoomMediumPadding;
|
|
F32 mZoomFarPadding;
|
|
S32 mTopWorldViewAvoidZone;
|
|
|
|
LLVector3d mZoomedCameraPos;
|
|
|
|
LLUICtrl *mMediaPanelScroll;
|
|
LLButton *mScrollUpCtrl;
|
|
LLButton *mScrollLeftCtrl;
|
|
LLButton *mScrollRightCtrl;
|
|
LLButton *mScrollDownCtrl;
|
|
|
|
bool mPauseFadeout;
|
|
bool mUpdateSlider;
|
|
bool mClearFaceOnFade;
|
|
bool mHideImmediately;
|
|
bool mSecureURL;
|
|
|
|
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;
|
|
|
|
F64 mMediaPlaySliderCtrlMouseDownValue;
|
|
};
|
|
|
|
#endif // LL_PANELPRIMMEDIACONTROLS_H
|