From 82d0f0eea44d74e54333ff8876b0ebff261ad047 Mon Sep 17 00:00:00 2001 From: Jiyun Yang Date: Tue, 23 Oct 2018 17:27:35 +0900 Subject: [PATCH] Add WebView example Change-Id: I15cf79251793eaffb2e54a750528acfb9b3bc95e Signed-off-by: Jiyun Yang --- com.samsung.dali-demo.xml | 3 + examples-reel/dali-examples-reel.cpp | 1 + examples/web-view/web-view-example.cpp | 140 +++++++++++++++++++++++++++++++++ resources/po/en_GB.po | 3 + resources/po/en_US.po | 3 + shared/dali-demo-strings.h | 2 + 6 files changed, 152 insertions(+) create mode 100644 examples/web-view/web-view-example.cpp diff --git a/com.samsung.dali-demo.xml b/com.samsung.dali-demo.xml index b114532..1487faf 100644 --- a/com.samsung.dali-demo.xml +++ b/com.samsung.dali-demo.xml @@ -272,6 +272,9 @@ + + + http://tizen.org/privilege/mediastorage diff --git a/examples-reel/dali-examples-reel.cpp b/examples-reel/dali-examples-reel.cpp index 32d2995..5bd2874 100644 --- a/examples-reel/dali-examples-reel.cpp +++ b/examples-reel/dali-examples-reel.cpp @@ -89,6 +89,7 @@ int DALI_EXPORT_API main(int argc, char **argv) demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR)); demo.AddExample(Example("tooltip.example", DALI_DEMO_STR_TITLE_TOOLTIP)); demo.AddExample(Example("transitions.example", DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS)); + demo.AddExample(Example("web-view.example", DALI_DEMO_STR_TITLE_WEB_VIEW)); demo.SortAlphabetically( true ); diff --git a/examples/web-view/web-view-example.cpp b/examples/web-view/web-view-example.cpp new file mode 100644 index 0000000..f3936ab --- /dev/null +++ b/examples/web-view/web-view-example.cpp @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include "dali-toolkit/devel-api/controls/web-view/web-view.h" +#include +#include + +using namespace Dali; + +namespace{ + +} + +class WebViewController : public ConnectionTracker +{ +public: + + WebViewController( Application& application ) + : mApplication( application ) + , mUrlPointer( 0 ) + { + // Connect to the Application's Init signal + mApplication.InitSignal().Connect( this, &WebViewController::Create ); + } + + ~WebViewController() + { + // Nothing to do here; + } + + const char* GetNextUrl() + { + static const unsigned int kUrlSize = 3; + static const char* kUrls[kUrlSize] = { + "https://webkit.org/blog-files/3d-transforms/poster-circle.html", + "https://www.amazon.com", + "https://www.google.com" + }; + mUrlPointer %= kUrlSize; + return kUrls[mUrlPointer++]; + } + + // The Init signal is received once (only) during the Application lifetime + void Create( Application& application ) + { + // Get a handle to the stage + Stage stage = Stage::GetCurrent(); + stage.SetBackgroundColor( Vector4(0.2, 0.6, 1, 1) ); + + float width = stage.GetSize().width; + float height = stage.GetSize().height; + float fontSize = width * 0.02f; + + mWebView = Toolkit::WebView::New( "ko-KR", "Asia/Seoul" ); + mWebView.SetParentOrigin( Dali::ParentOrigin::CENTER ); + mWebView.SetAnchorPoint( Dali::AnchorPoint::CENTER ); + mWebView.SetPosition( 0, 0 ); + mWebView.SetSize( width, height ); + mWebView.PageLoadStartedSignal().Connect( this, &WebViewController::OnPageLoadStarted ); + mWebView.PageLoadFinishedSignal().Connect( this, &WebViewController::OnPageLoadFinished ); + + std::string url = GetNextUrl(); + mWebView.LoadUrl( url ); + stage.Add(mWebView); + + mAddressLabel = Toolkit::TextLabel::New( url ); + mAddressLabel.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, fontSize ); + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Color::WHITE ); + mAddressLabel.SetBackgroundColor( Vector4( 0, 0, 0, 0.5f ) ); + mAddressLabel.TouchedSignal().Connect( this, &WebViewController::OnTouchText ); + stage.Add( mAddressLabel ); + + // Respond to key events + stage.KeyEventSignal().Connect( this, &WebViewController::OnKeyEvent ); + Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( mWebView ); + } + + void OnPageLoadStarted( Toolkit::WebView view, const std::string& url ) + { + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, "Loading" ); + } + + void OnPageLoadFinished( Toolkit::WebView view, const std::string& url ) + { + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, url.c_str() ); + } + + bool OnTouchText( Actor actor, const TouchEvent& event ) + { + if ( event.GetPoint( 0 ).state == TouchPoint::Up ) + { + std::string url = GetNextUrl(); + mAddressLabel.SetProperty(Toolkit::TextLabel::Property::TEXT, "Waiting" ); + mWebView.LoadUrl( url ); + } + + return true; + } + + void OnKeyEvent( const KeyEvent& event ) + { + if( event.state == KeyEvent::Down ) + { + if ( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) ) + { + mApplication.Quit(); + } + } + } + +private: + Application& mApplication; + Toolkit::WebView mWebView; + Toolkit::TextLabel mAddressLabel; + unsigned int mUrlPointer; +}; + +int DALI_EXPORT_API main( int argc, char **argv ) +{ + Application application = Application::New( &argc, &argv ); + WebViewController test( application ); + application.MainLoop(); + return 0; +} diff --git a/resources/po/en_GB.po b/resources/po/en_GB.po index 4cf9cde..b6339ab 100755 --- a/resources/po/en_GB.po +++ b/resources/po/en_GB.po @@ -243,3 +243,6 @@ msgstr "Skybox" msgid "DALI_DEMO_STR_TITLE_PBR" msgstr "PBR" + +msgid "DALI_DEMO_STR_TITLE_WEB_VIEW" +msgstr "Web View" diff --git a/resources/po/en_US.po b/resources/po/en_US.po index 74baa0a..d3d6215 100755 --- a/resources/po/en_US.po +++ b/resources/po/en_US.po @@ -246,3 +246,6 @@ msgstr "Skybox" msgid "DALI_DEMO_STR_TITLE_PBR" msgstr "PBR" + +msgid "DALI_DEMO_STR_TITLE_WEB_VIEW" +msgstr "Web View" diff --git a/shared/dali-demo-strings.h b/shared/dali-demo-strings.h index 9224ae5..92f08e8 100644 --- a/shared/dali-demo-strings.h +++ b/shared/dali-demo-strings.h @@ -114,6 +114,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_TILT_SENSOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TILT_SENSOR") #define DALI_DEMO_STR_TITLE_TOOLTIP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TOOLTIP") #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS") +#define DALI_DEMO_STR_TITLE_WEB_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_WEB_VIEW") #else // !INTERNATIONALIZATION_ENABLED @@ -199,6 +200,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_TILT_SENSOR "Tilt Sensor" #define DALI_DEMO_STR_TITLE_TOOLTIP "Tooltip" #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS "Visual Transitions" +#define DALI_DEMO_STR_TITLE_WEB_VIEW "Web View" #endif #ifdef __cplusplus -- 2.7.4