diff options
Diffstat (limited to 'indra/newview/llmediactrl.h')
-rw-r--r-- | indra/newview/llmediactrl.h | 448 |
1 files changed, 224 insertions, 224 deletions
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h index 73c970dcc1..a219bb6ec4 100644 --- a/indra/newview/llmediactrl.h +++ b/indra/newview/llmediactrl.h @@ -1,224 +1,224 @@ -/** - * @file llmediactrl.h - * @brief Web browser UI control - * - * $LicenseInfo:firstyear=2006&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_LLMediaCtrl_H -#define LL_LLMediaCtrl_H - -#include "llviewermedia.h" - -#include "lluictrl.h" -#include "llframetimer.h" -#include "llnotificationptr.h" - -class LLViewBorder; -class LLUICtrlFactory; -class LLContextMenu; - -//////////////////////////////////////////////////////////////////////////////// -// -class LLMediaCtrl : - public LLPanel, - public LLViewerMediaObserver, - public LLViewerMediaEventEmitter, - public LLInstanceTracker<LLMediaCtrl, LLUUID> -{ - LOG_CLASS(LLMediaCtrl); -public: - - struct Params : public LLInitParam::Block<Params, LLPanel::Params> - { - Optional<std::string> start_url; - - Optional<bool> border_visible, - hide_loading, - decouple_texture_size, - trusted_content, - focus_on_click; - - Optional<S32> texture_width, - texture_height; - - Optional<LLUIColor> caret_color; - - Optional<std::string> initial_mime_type; - Optional<std::string> media_id; - Optional<std::string> error_page_url; - - Params(); - }; - -protected: - LLMediaCtrl(const Params&); - friend class LLUICtrlFactory; - -public: - virtual ~LLMediaCtrl(); - - void setBorderVisible( bool border_visible ); - - // For the tutorial window, we don't want to take focus on clicks, - // as the examples include how to move around with the arrow - // keys. Thus we keep focus on the app by setting this false. - // Defaults to true. - void setTakeFocusOnClick( bool take_focus ); - - // handle mouse related methods - virtual bool handleHover( S32 x, S32 y, MASK mask ); - virtual bool handleMouseUp( S32 x, S32 y, MASK mask ); - virtual bool handleMouseDown( S32 x, S32 y, MASK mask ); - virtual bool handleRightMouseDown(S32 x, S32 y, MASK mask); - virtual bool handleRightMouseUp(S32 x, S32 y, MASK mask); - virtual bool handleDoubleClick( S32 x, S32 y, MASK mask ); - virtual bool handleScrollWheel( S32 x, S32 y, S32 clicks ); - virtual bool handleScrollHWheel( S32 x, S32 y, S32 clicks ); - virtual bool handleToolTip(S32 x, S32 y, MASK mask); - - // navigation - void navigateTo( std::string url_in, std::string mime_type = "", bool clean_browser = false); - void navigateBack(); - void navigateHome(); - void navigateForward(); - void navigateStop(); - void navigateToLocalPage( const std::string& subdir, const std::string& filename_in ); - bool canNavigateBack(); - bool canNavigateForward(); - std::string getCurrentNavUrl(); - - // By default, we do not handle "secondlife:///app/" SLURLs, because - // those can cause teleports, open windows, etc. We cannot be sure - // that each "click" is actually due to a user action, versus - // Javascript or some other mechanism. However, we need the search - // floater and login page to handle these URLs. Those are safe - // because we control the page content. See DEV-9530. JC. - void setHomePageUrl( const std::string& urlIn, const std::string& mime_type = LLStringUtil::null ); - std::string getHomePageUrl(); - - void setTarget(const std::string& target); - - void setErrorPageURL(const std::string& url); - const std::string& getErrorPageURL(); - - // Clear the browser cache when the instance gets loaded - void clearCache(); - - // accessor/mutator for flag that indicates if frequent updates to texture happen - bool getFrequentUpdates() { return mFrequentUpdates; }; - void setFrequentUpdates( bool frequentUpdatesIn ) { mFrequentUpdates = frequentUpdatesIn; }; - - void setAlwaysRefresh(bool refresh) { mAlwaysRefresh = refresh; } - bool getAlwaysRefresh() { return mAlwaysRefresh; } - - void setForceUpdate(bool force_update) { mForceUpdate = force_update; } - bool getForceUpdate() { return mForceUpdate; } - - bool ensureMediaSourceExists(); - void unloadMediaSource(); - - LLPluginClassMedia* getMediaPlugin(); - - bool setCaretColor( unsigned int red, unsigned int green, unsigned int blue ); - - void setDecoupleTextureSize(bool decouple) { mDecoupleTextureSize = decouple; } - bool getDecoupleTextureSize() { return mDecoupleTextureSize; } - - void setTextureSize(S32 width, S32 height); - - void showNotification(LLNotificationPtr notify); - void hideNotification(); - - void setTrustedContent(bool trusted); - - void setAllowFileDownload(bool allow) { mAllowFileDownload = allow; } - - // over-rides - virtual bool handleKeyHere( KEY key, MASK mask); - virtual bool handleKeyUpHere(KEY key, MASK mask); - virtual void onVisibilityChange ( bool new_visibility ); - virtual bool handleUnicodeCharHere(llwchar uni_char); - virtual void reshape( S32 width, S32 height, bool called_from_parent = true); - virtual void draw(); - virtual bool postBuild(); - - // focus overrides - void onFocusLost(); - void onFocusReceived(); - - // Incoming media event dispatcher - virtual void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event); - - // right click debugging item - void onOpenWebInspector(); - - LLUUID getTextureID() {return mMediaTextureID;} - - // The Browser windows want keyup and keydown events. Overridden from LLFocusableElement to return true. - virtual bool wantsKeyUpKeyDown() const; - virtual bool wantsReturnKey() const; - - virtual bool acceptsTextInput() const { return true; } - - protected: - void convertInputCoords(S32& x, S32& y); - - private: - void calcOffsetsAndSize(S32 *x_offset, S32 *y_offset, S32 *width, S32 *height); - - private: - void onVisibilityChanged ( const LLSD& new_visibility ); - void onPopup(const LLSD& notification, const LLSD& response); - - const S32 mTextureDepthBytes; - LLUUID mMediaTextureID; - LLViewBorder* mBorder; - bool mFrequentUpdates, - mForceUpdate, - mTrusted, - mAlwaysRefresh, - mTakeFocusOnClick, - mStretchToFill, - mMaintainAspectRatio, - mHideLoading, - mHidingInitialLoad, - mClearCache, - mHoverTextChanged, - mDecoupleTextureSize, - mUpdateScrolls, - mAllowFileDownload; - - std::string mHomePageUrl, - mHomePageMimeType, - mCurrentNavUrl, - mErrorPageURL, - mTarget; - viewer_media_t mMediaSource; - S32 mTextureWidth, - mTextureHeight; - - class LLWindowShade* mWindowShade; - LLHandle<LLContextMenu> mContextMenuHandle; -}; - -#endif // LL_LLMediaCtrl_H +/**
+ * @file llmediactrl.h
+ * @brief Web browser UI control
+ *
+ * $LicenseInfo:firstyear=2006&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_LLMediaCtrl_H
+#define LL_LLMediaCtrl_H
+
+#include "llviewermedia.h"
+
+#include "lluictrl.h"
+#include "llframetimer.h"
+#include "llnotificationptr.h"
+
+class LLViewBorder;
+class LLUICtrlFactory;
+class LLContextMenu;
+
+////////////////////////////////////////////////////////////////////////////////
+//
+class LLMediaCtrl :
+ public LLPanel,
+ public LLViewerMediaObserver,
+ public LLViewerMediaEventEmitter,
+ public LLInstanceTracker<LLMediaCtrl, LLUUID>
+{
+ LOG_CLASS(LLMediaCtrl);
+public:
+
+ struct Params : public LLInitParam::Block<Params, LLPanel::Params>
+ {
+ Optional<std::string> start_url;
+
+ Optional<bool> border_visible,
+ hide_loading,
+ decouple_texture_size,
+ trusted_content,
+ focus_on_click;
+
+ Optional<S32> texture_width,
+ texture_height;
+
+ Optional<LLUIColor> caret_color;
+
+ Optional<std::string> initial_mime_type;
+ Optional<std::string> media_id;
+ Optional<std::string> error_page_url;
+
+ Params();
+ };
+
+protected:
+ LLMediaCtrl(const Params&);
+ friend class LLUICtrlFactory;
+
+public:
+ virtual ~LLMediaCtrl();
+
+ void setBorderVisible( bool border_visible );
+
+ // For the tutorial window, we don't want to take focus on clicks,
+ // as the examples include how to move around with the arrow
+ // keys. Thus we keep focus on the app by setting this false.
+ // Defaults to true.
+ void setTakeFocusOnClick( bool take_focus );
+
+ // handle mouse related methods
+ virtual bool handleHover( S32 x, S32 y, MASK mask );
+ virtual bool handleMouseUp( S32 x, S32 y, MASK mask );
+ virtual bool handleMouseDown( S32 x, S32 y, MASK mask );
+ virtual bool handleRightMouseDown(S32 x, S32 y, MASK mask);
+ virtual bool handleRightMouseUp(S32 x, S32 y, MASK mask);
+ virtual bool handleDoubleClick( S32 x, S32 y, MASK mask );
+ virtual bool handleScrollWheel( S32 x, S32 y, S32 clicks );
+ virtual bool handleScrollHWheel( S32 x, S32 y, S32 clicks );
+ virtual bool handleToolTip(S32 x, S32 y, MASK mask);
+
+ // navigation
+ void navigateTo( std::string url_in, std::string mime_type = "", bool clean_browser = false);
+ void navigateBack();
+ void navigateHome();
+ void navigateForward();
+ void navigateStop();
+ void navigateToLocalPage( const std::string& subdir, const std::string& filename_in );
+ bool canNavigateBack();
+ bool canNavigateForward();
+ std::string getCurrentNavUrl();
+
+ // By default, we do not handle "secondlife:///app/" SLURLs, because
+ // those can cause teleports, open windows, etc. We cannot be sure
+ // that each "click" is actually due to a user action, versus
+ // Javascript or some other mechanism. However, we need the search
+ // floater and login page to handle these URLs. Those are safe
+ // because we control the page content. See DEV-9530. JC.
+ void setHomePageUrl( const std::string& urlIn, const std::string& mime_type = LLStringUtil::null );
+ std::string getHomePageUrl();
+
+ void setTarget(const std::string& target);
+
+ void setErrorPageURL(const std::string& url);
+ const std::string& getErrorPageURL();
+
+ // Clear the browser cache when the instance gets loaded
+ void clearCache();
+
+ // accessor/mutator for flag that indicates if frequent updates to texture happen
+ bool getFrequentUpdates() { return mFrequentUpdates; };
+ void setFrequentUpdates( bool frequentUpdatesIn ) { mFrequentUpdates = frequentUpdatesIn; };
+
+ void setAlwaysRefresh(bool refresh) { mAlwaysRefresh = refresh; }
+ bool getAlwaysRefresh() { return mAlwaysRefresh; }
+
+ void setForceUpdate(bool force_update) { mForceUpdate = force_update; }
+ bool getForceUpdate() { return mForceUpdate; }
+
+ bool ensureMediaSourceExists();
+ void unloadMediaSource();
+
+ LLPluginClassMedia* getMediaPlugin();
+
+ bool setCaretColor( unsigned int red, unsigned int green, unsigned int blue );
+
+ void setDecoupleTextureSize(bool decouple) { mDecoupleTextureSize = decouple; }
+ bool getDecoupleTextureSize() { return mDecoupleTextureSize; }
+
+ void setTextureSize(S32 width, S32 height);
+
+ void showNotification(LLNotificationPtr notify);
+ void hideNotification();
+
+ void setTrustedContent(bool trusted);
+
+ void setAllowFileDownload(bool allow) { mAllowFileDownload = allow; }
+
+ // over-rides
+ virtual bool handleKeyHere( KEY key, MASK mask);
+ virtual bool handleKeyUpHere(KEY key, MASK mask);
+ virtual void onVisibilityChange ( bool new_visibility );
+ virtual bool handleUnicodeCharHere(llwchar uni_char);
+ virtual void reshape( S32 width, S32 height, bool called_from_parent = true);
+ virtual void draw();
+ virtual bool postBuild();
+
+ // focus overrides
+ void onFocusLost();
+ void onFocusReceived();
+
+ // Incoming media event dispatcher
+ virtual void handleMediaEvent(LLPluginClassMedia* self, EMediaEvent event);
+
+ // right click debugging item
+ void onOpenWebInspector();
+
+ LLUUID getTextureID() {return mMediaTextureID;}
+
+ // The Browser windows want keyup and keydown events. Overridden from LLFocusableElement to return true.
+ virtual bool wantsKeyUpKeyDown() const;
+ virtual bool wantsReturnKey() const;
+
+ virtual bool acceptsTextInput() const { return true; }
+
+ protected:
+ void convertInputCoords(S32& x, S32& y);
+
+ private:
+ void calcOffsetsAndSize(S32 *x_offset, S32 *y_offset, S32 *width, S32 *height);
+
+ private:
+ void onVisibilityChanged ( const LLSD& new_visibility );
+ void onPopup(const LLSD& notification, const LLSD& response);
+
+ const S32 mTextureDepthBytes;
+ LLUUID mMediaTextureID;
+ LLViewBorder* mBorder;
+ bool mFrequentUpdates,
+ mForceUpdate,
+ mTrusted,
+ mAlwaysRefresh,
+ mTakeFocusOnClick,
+ mStretchToFill,
+ mMaintainAspectRatio,
+ mHideLoading,
+ mHidingInitialLoad,
+ mClearCache,
+ mHoverTextChanged,
+ mDecoupleTextureSize,
+ mUpdateScrolls,
+ mAllowFileDownload;
+
+ std::string mHomePageUrl,
+ mHomePageMimeType,
+ mCurrentNavUrl,
+ mErrorPageURL,
+ mTarget;
+ viewer_media_t mMediaSource;
+ S32 mTextureWidth,
+ mTextureHeight;
+
+ class LLWindowShade* mWindowShade;
+ LLHandle<LLContextMenu> mContextMenuHandle;
+};
+
+#endif // LL_LLMediaCtrl_H
|