123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- /****************************************************************************
- Copyright (c) 2014-2016 Chukong Technologies Inc.
- Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd.
-
- http://www.cocos2d-x.org
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
- ****************************************************************************/
- #ifndef __COCOS2D_UI_WEBVIEW_H
- #define __COCOS2D_UI_WEBVIEW_H
- #include "platform/CCPlatformConfig.h"
- #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_TIZEN || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) && !defined(CC_PLATFORM_OS_TVOS)
- #include "ui/UIWidget.h"
- #include "ui/GUIExport.h"
- #include "base/CCData.h"
- /**
- * @addtogroup ui
- * @{
- */
- NS_CC_BEGIN
- namespace experimental{
- namespace ui{
-
- class WebViewImpl;
- /**
- * @brief A View that displays web pages.
- *
- * @note WebView displays web pages base on system widget.
- * It's mean WebView displays web pages above all graphical elements of cocos2d-x.
- * @js NA
- */
- class CC_GUI_DLL WebView : public cocos2d::ui::Widget {
- public:
- /**
- * Allocates and initializes a WebView.
- */
- static WebView *create();
- /**
- * Set javascript interface scheme.
- *
- * @see WebView::setOnJSCallback()
- */
- void setJavascriptInterfaceScheme(const std::string &scheme);
- /**
- * Sets the main page contents, MIME type, content encoding, and base URL.
- *
- * @param data The content for the main page.
- * @param MIMEType The MIME type of the data.
- * @param encoding The encoding of the data.
- * @param baseURL The base URL for the content.
- */
- void loadData(const cocos2d::Data &data,
- const std::string &MIMEType,
- const std::string &encoding,
- const std::string &baseURL);
-
- /**
- * Sets the main page content and base URL.
- *
- * @param string The content for the main page.
- * @param baseURL The base URL for the content.
- */
- void loadHTMLString(const std::string &string, const std::string &baseURL = "");
- /**
- * Loads the given URL. It doesn't clean cached data.
- *
- * @param url Content URL.
- */
- void loadURL(const std::string &url);
- /**
- * Loads the given URL with cleaning cached data or not.
- * @param url Content URL.
- * @cleanCachedData Whether to clean cached data.
- */
- void loadURL(const std::string &url, bool cleanCachedData);
- /**
- * Loads the given fileName.
- *
- * @param fileName Content fileName.
- */
- void loadFile(const std::string &fileName);
-
- void PostURL(const std::string &url,const std::string& data);
- /**
- * Stops the current load.
- */
- void stopLoading();
- /**
- * Reloads the current URL.
- */
- void reload();
- /**
- * Gets whether this WebView has a back history item.
- *
- * @return WebView has a back history item.
- */
- bool canGoBack();
- /**
- * Gets whether this WebView has a forward history item.
- *
- * @return WebView has a forward history item.
- */
- bool canGoForward();
- /**
- * Goes back in the history.
- */
- void goBack();
- /**
- * Goes forward in the history.
- */
- void goForward();
- /**
- * Evaluates JavaScript in the context of the currently displayed page.
- */
- void evaluateJS(const std::string &js);
- /**
- * Set WebView should support zooming. The default value is false.
- */
- void setScalesPageToFit(const bool scalesPageToFit);
-
- /**
- * Call before a web view begins loading.
- *
- * @param callback The web view that is about to load new content.
- * @return YES if the web view should begin loading content; otherwise, NO.
- */
- void setOnShouldStartLoading(const std::function<bool(WebView *sender, const std::string &url)>& callback);
-
- /**
- * A callback which will be called when a WebView event happens.
- */
- typedef std::function<void(WebView *sender, const std::string &url)> ccWebViewCallback;
- /**
- * Call after a web view finishes loading.
- *
- * @param callback The web view that has finished loading.
- */
- void setOnDidFinishLoading(const ccWebViewCallback& callback);
-
- /**
- * Call if a web view failed to load content.
- *
- * @param callback The web view that has failed loading.
- */
- void setOnDidFailLoading(const ccWebViewCallback& callback);
-
- /**
- * This callback called when load URL that start with javascript interface scheme.
- */
- void setOnJSCallback(const ccWebViewCallback& callback);
-
- /**
- * Get the callback when WebView is about to start.
- */
- std::function<bool(WebView *sender, const std::string &url)> getOnShouldStartLoading()const;
-
- /**
- * Get the callback when WebView has finished loading.
- */
- ccWebViewCallback getOnDidFinishLoading()const;
-
- /**
- * Get the callback when WebView has failed loading.
- */
- ccWebViewCallback getOnDidFailLoading()const;
- /**
- *Get the Javascript callback.
- */
- ccWebViewCallback getOnJSCallback()const;
- /**
- * Set whether the webview bounces at end of scroll of WebView.
- */
- void setBounces(bool bounce);
- virtual void draw(cocos2d::Renderer *renderer, cocos2d::Mat4 const &transform, uint32_t flags) override;
- /**
- * Toggle visibility of WebView.
- */
- virtual void setVisible(bool visible) override;
- /**
- * SetOpacity of webview.
- */
- virtual void setOpacityWebView(float opacity);
-
- /**
- * getOpacity of webview.
- */
- virtual float getOpacityWebView() const;
-
- /**
- * set the background transparent
- */
- virtual void setBackgroundTransparent();
- virtual void onEnter() override;
- virtual void onExit() override;
-
- protected:
- virtual cocos2d::ui::Widget* createCloneInstance() override;
- virtual void copySpecialProperties(Widget* model) override;
-
- std::function<bool(WebView *sender, const std::string &url)> _onShouldStartLoading;
-
- ccWebViewCallback _onDidFinishLoading;
-
- ccWebViewCallback _onDidFailLoading;
-
- ccWebViewCallback _onJSCallback;
- CC_CONSTRUCTOR_ACCESS:
- /**
- * Default constructor.
- */
- WebView();
-
- /**
- * Default destructor.
- */
- virtual ~WebView();
- private:
- WebViewImpl *_impl;
- friend class WebViewImpl;
- };
-
- } // namespace ui
- } // namespace experimental
- }//namespace cocos2d
- #endif
- // end group
- /// @}
- #endif //__COCOS2D_UI_WEBVIEW_H
|