Added example of remote image load 42/119142/14
authorDavid Steele <david.steele@samsung.com>
Wed, 15 Mar 2017 19:35:33 +0000 (19:35 +0000)
committerDavid Steele <david.steele@samsung.com>
Fri, 4 Aug 2017 15:30:55 +0000 (16:30 +0100)
Change-Id: Ie8e8523d5a8ff8aac50931bb96ca764195890f15

com.samsung.dali-demo.xml
examples-reel/dali-examples-reel.cpp
examples/remote-image-loading/remote-image-loading-example.cpp [new file with mode: 0644]
resources/po/en_GB.po
resources/po/en_US.po
shared/dali-demo-strings.h

index fc16157..9e3e8d8 100644 (file)
@@ -1,7 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns="http://tizen.org/ns/packages" package="com.samsung.dali-demo" version="0.0.1" api-version="2.4" install-location="internal-only">
 <!-- NOTE THAT ALL LEADING WHITESPACE IN THIS FILE MUST BE TABS, NOT SPACES. APPS WITH LEADING SPACES WILL SILENTLY FAIL TO RUN ON A TARGET DEVICE. -->
-
        <label>Dali Demo</label>
        <author email="jonghyun.ho@samsung.com" href="www.samsung.com">Jonghyun Ho</author>
        <description>DALi demo Application</description>
        <ui-application appid="focus-integration.example" exec="/usr/apps/com.samsung.dali-demo/bin/focus-integration.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
                <label>Focus Integration</label>
        </ui-application>
+       <ui-application appid="remote-image-loading.example" exec="/usr/apps/com.samsung.dali-demo/bin/remote-image-loading.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
+               <label>Remote Image</label>
+       </ui-application>
        <ui-application appid="rendering-cube.example" exec="/usr/apps/com.samsung.dali-demo/bin/rendering-cube.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
                <label>Rendering Cube</label>
        </ui-application>
        <ui-application appid="text-overlap.example" exec="/usr/apps/com.samsung.dali-demo/bin/text-overlap.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
                <label>Text Overlap</label>
        </ui-application>
+       <privileges>
+               <privilege>http://tizen.org/privilege/mediastorage</privilege>
+               <privilege>http://tizen.org/privilege/externalstorage</privilege>
+               <privilege>http://tizen.org/privilege/externalstorage.appdata</privilege>
+               <privilege>http://tizen.org/privilege/unlimitedstorage</privilege>
+               <privilege>http://tizen.org/privilege/filesystem.write</privilege>
+               <privilege>http://tizen.org/privilege/filesystem.read</privilege>
+               <privilege>http://tizen.org/privilege/download</privilege>
+               <privilege>http://tizen.org/privilege/internet</privilege>
+               <privilege>http://tizen.org/privilege/network.get</privilege>
+               <privilege>http://tizen.org/privilege/network.profile</privilege>
+               <privilege>http://tizen.org/privilege/network.set</privilege>
+       </privileges>
 </manifest>
index 04a8c83..8a7e66b 100644 (file)
@@ -82,6 +82,7 @@ int DALI_EXPORT_API main(int argc, char **argv)
   demo.AddExample(Example("text-label-emojis.example", DALI_DEMO_STR_TITLE_EMOJI_TEXT));
   demo.AddExample(Example("text-overlap.example", DALI_DEMO_STR_TITLE_TEXT_OVERLAP));
   demo.AddExample(Example("text-scrolling.example", DALI_DEMO_STR_TITLE_TEXT_SCROLLING));
+  demo.AddExample(Example("remote-image-loading.example", DALI_DEMO_STR_TITLE_REMOTE_IMAGE));
   demo.AddExample(Example("textured-mesh.example", DALI_DEMO_STR_TITLE_TEXTURED_MESH));
   demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR));
   demo.AddExample(Example("tooltip.example", DALI_DEMO_STR_TITLE_TOOLTIP));
diff --git a/examples/remote-image-loading/remote-image-loading-example.cpp b/examples/remote-image-loading/remote-image-loading-example.cpp
new file mode 100644 (file)
index 0000000..2733d3d
--- /dev/null
@@ -0,0 +1,225 @@
+/*
+ * Copyright (c) 2016 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 <shared/utility.h>
+#include <stdlib.h>
+#include <iostream>
+#include <dali/dali.h>
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali/devel-api/actors/actor-devel.h>
+
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+
+// This example shows the load-time image scaling and filtering features.
+//
+class MyTester : public ConnectionTracker
+{
+public:
+  MyTester(Application &application) : mApplication(application)
+  {
+    // Connect to the Application's Init signal
+    mApplication.InitSignal().Connect(this, &MyTester::Create);
+  }
+
+  ~MyTester()
+  {
+    // Nothing to do here;
+  }
+
+  void ConnectEventSignal(Control control)
+  {
+    control.TouchSignal().Connect(this, &MyTester::OnControlTouch);
+
+    control.SetKeyboardFocusable(true);
+    control.KeyEventSignal().Connect(this, &MyTester::OnControlKeyEvent);
+    control.KeyInputFocusGainedSignal().Connect(this, &MyTester::OnFocusSet);
+    control.KeyInputFocusLostSignal().Connect(this, &MyTester::OnFocusUnSet);
+  }
+
+  // The Init signal is received once (only) during the Application lifetime
+  void Create(Application &application)
+  {
+    stage = Stage::GetCurrent();
+    stage.SetBackgroundColor(Color::BLACK);
+    stage.KeyEventSignal().Connect(this, &MyTester::OnKey);
+    stage.TouchSignal().Connect(this, &MyTester::OnTouch);
+
+    TextLabel rubric = TextLabel::New( "You will need a working internet connection to see the images below");
+    rubric.SetProperty( TextLabel::Property::MULTI_LINE, true );
+    rubric.SetProperty( TextLabel::Property::TEXT_COLOR, Color::WHITE );
+    rubric.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+    rubric.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
+    rubric.SetParentOrigin( ParentOrigin::TOP_CENTER );
+    rubric.SetAnchorPoint( ParentOrigin::TOP_CENTER );
+    stage.Add( rubric );
+
+    mImageView1 = Toolkit::ImageView::New("http://static.midomi.com/s/s/images/000/000/000/000/293/259/19/520_000000000000293259191500x1500_72dpi_RGB_q70.jpg");
+
+    mImageView1.SetName("mImageView1");
+    mImageView1.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    mImageView1.SetAnchorPoint(AnchorPoint::TOP_CENTER);
+    mImageView1.SetProperty(DevelActor::Property::POSITION_USES_ANCHOR_POINT, false);
+    mImageView1.SetPosition(0, 100);
+    mImageView1.SetBackgroundColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f));
+    stage.Add(mImageView1);
+
+    mImageView2 = Toolkit::ImageView::New("http://static.midomi.com/s/s/images/000/000/000/000/212/651/88/520_000000000000212651881500x1500_72dpi_RGB_q70.jpg");
+    mImageView2.SetName("mImageView2");
+    mImageView2.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    mImageView2.SetAnchorPoint(AnchorPoint::TOP_CENTER);
+    mImageView2.SetProperty(DevelActor::Property::POSITION_USES_ANCHOR_POINT, false);
+    mImageView2.SetPosition(400, 100);
+    mImageView2.SetBackgroundColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f));
+    stage.Add(mImageView2);
+
+    mImageView3 = Toolkit::ImageView::New("http://static.midomi.com/s/s/images/000/000/000/000/212/353/21/520_000000000000212353211500x1500_72dpi_RGB_q70.jpg");
+    mImageView3.SetName("mImageView3");
+    mImageView3.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    mImageView3.SetAnchorPoint(AnchorPoint::TOP_CENTER);
+    mImageView3.SetProperty(DevelActor::Property::POSITION_USES_ANCHOR_POINT, false);
+    mImageView3.SetPosition(0, 400);
+    mImageView3.SetBackgroundColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f));
+    stage.Add(mImageView3);
+
+    mImageView4 = Toolkit::ImageView::New("http://d2k43l0oslhof9.cloudfront.net/platform/image/contents/vc/20/01/58/20170629100630071189_0bf6b911-a847-cba4-e518-be40fe2f579420170629192203240.jpg");
+    mImageView4.SetName("mImageView4");
+    mImageView4.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    mImageView4.SetAnchorPoint(AnchorPoint::TOP_CENTER);
+    mImageView4.SetProperty(DevelActor::Property::POSITION_USES_ANCHOR_POINT, false);
+    mImageView4.SetPosition(400, 400);
+    mImageView4.SetBackgroundColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f));
+    stage.Add(mImageView4);
+
+    mImageView5 = Toolkit::ImageView::New("http://static.midomi.com/h/images/w/weather_sunny.png");
+    mImageView5.SetName("mImageView5");
+    mImageView4.SetParentOrigin(ParentOrigin::TOP_LEFT);
+    mImageView5.SetAnchorPoint(AnchorPoint::TOP_CENTER);
+    mImageView5.SetProperty(DevelActor::Property::POSITION_USES_ANCHOR_POINT, false);
+    mImageView5.SetPosition(800, 100);
+    mImageView5.SetBackgroundColor(Vector4(0.0f, 0.0f, 0.0f, 0.0f));
+    stage.Add(mImageView5);
+
+    // Tie-in input event handlers:
+    stage.KeyEventSignal().Connect( this, &MyTester::OnKeyEvent );
+  }
+
+  void OnAnimationEnd(Animation &source)
+  {
+    std::cout<<"OnAnimationEnd" << std::endl;
+  }
+
+  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();
+      }
+    }
+  }
+
+  void OnKey(const KeyEvent &event)
+  {
+    if (event.state == KeyEvent::Down)
+    {
+      std::cout<<"Stage key : " << event.keyCode << std::endl;
+    }
+  }
+
+  void OnTouch(const TouchData &touch)
+  {
+    if (touch.GetState(0) == PointState::DOWN)
+    {
+      std::cout<<"Stage touch" << std::endl;
+    }
+  }
+
+  bool OnControlKeyEvent(Toolkit::Control control, const KeyEvent &event)
+  {
+    if (event.state == KeyEvent::Down)
+    {
+      std::cout<<"Control down key : " << control.GetName() << ", keyCode : " << event.keyCode << std::endl;
+    }
+    else
+    {
+      std::cout<<"Control up key : " << control.GetName() << ", keyCode : " << event.keyCode << std::endl;
+    }
+    return false;
+  }
+
+  bool OnControlTouch(Actor actor, const TouchData &touch)
+  {
+    if (touch.GetState(0) == PointState::DOWN)
+    {
+
+      std::cout<<"Control touch " << actor.GetName() << ", parent " << actor.GetParent().GetName() << std::endl;
+    }
+
+    return false;
+  }
+
+  void OnFocusSet(Control control)
+  {
+    std::cout<<"OnFocusSet " << control.GetName() << std::endl;
+  }
+
+  void OnFocusUnSet(Control control)
+  {
+    std::cout<<"OnFocusUnSet " << control.GetName() << std::endl;
+  }
+
+private:
+  Stage stage;
+  Application &mApplication;
+
+  Control mControl1;
+  Control mControl2;
+  ImageView mImageView1;
+  ImageView mImageView2;
+  ImageView mImageView3;
+  ImageView mImageView4;
+  ImageView mImageView5;
+
+  TextLabel mTextLabel1;
+  TextLabel mTextLabel2;
+  TextField mTextField;
+  TextEditor mTextEditor;
+
+  Animation mAnimation;
+  Timer     mTimer;
+
+};
+
+void RunTest(Application &application)
+{
+  MyTester test(application);
+  application.MainLoop();
+}
+
+// Entry point for Linux & Tizen applications
+int DALI_EXPORT_API main(int argc, char **argv)
+{
+
+  Application application = Application::New(&argc, &argv, "");
+  RunTest(application);
+
+  return 0;
+}
index 877b2ee..3ceb190 100755 (executable)
@@ -169,6 +169,9 @@ msgstr "FPP Game"
 msgid "DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS"
 msgstr "Visual Transitions"
 
+msgid "DALI_DEMO_STR_TITLE_REMOTE_IMAGE"
+msgstr "Remote Image"
+
 msgid "DALI_DEMO_STR_TITLE_RENDERING_TEXTURED_CUBE"
 msgstr "Textured cube"
 
index b2976b8..c52ac67 100755 (executable)
@@ -169,6 +169,9 @@ msgstr "FPP Game"
 msgid "DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS"
 msgstr "Visual Transitions"
 
+msgid "DALI_DEMO_STR_TITLE_REMOTE_IMAGE"
+msgstr "Remote Image"
+
 msgid "DALI_DEMO_STR_TITLE_RENDERING_TEXTURED_CUBE"
 msgstr "Textured cube"
 
index 47baf36..83ad346 100644 (file)
@@ -73,13 +73,14 @@ extern "C"
 #define DALI_DEMO_STR_TITLE_PIVOT                       dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PIVOT")
 #define DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES            dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES")
 #define DALI_DEMO_STR_TITLE_PROGRESS_BAR                dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_PROGRESS_BAR")
+#define DALI_DEMO_STR_TITLE_REFRACTION                  dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_REFRACTION")
+#define DALI_DEMO_STR_TITLE_REMOTE_IMAGE                dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_REMOTE_IMAGE")
 #define DALI_DEMO_STR_TITLE_RENDERING_DRAW_LINE         dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_RENDERING_DRAW_LINE")
 #define DALI_DEMO_STR_TITLE_RENDERING_DRAW_TRIANGLE     dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_RENDERING_DRAW_TRIANGLE")
 #define DALI_DEMO_STR_TITLE_RENDERING_DRAW_CUBE         dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_RENDERING_DRAW_CUBE")
 #define DALI_DEMO_STR_TITLE_RENDERING_TEXTURED_CUBE     dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_RENDERING_TEXTURED_CUBE")
 #define DALI_DEMO_STR_TITLE_RENDERING_RADIAL_PROGRESS   dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_RENDERING_RADIAL_PROGRESS")
 #define DALI_DEMO_STR_TITLE_RENDERING_RAY_MARCHING      dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_RENDERING_RAY_MARCHING")
-#define DALI_DEMO_STR_TITLE_REFRACTION                  dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_REFRACTION")
 #define DALI_DEMO_STR_TITLE_RENDERER_STENCIL            dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_RENDERER_STENCIL")
 #define DALI_DEMO_STR_TITLE_SIMPLE_VISUALS_CONTROL      dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_SIMPLE_VISUALS")
 #define DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI             dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI")
@@ -141,13 +142,14 @@ extern "C"
 #define DALI_DEMO_STR_TITLE_PIVOT                       "Pivot"
 #define DALI_DEMO_STR_TITLE_PRIMITIVE_SHAPES            "Primitive Shapes"
 #define DALI_DEMO_STR_TITLE_PROGRESS_BAR                "Progress Bar"
+#define DALI_DEMO_STR_TITLE_REFRACTION                  "Refract Effect"
+#define DALI_DEMO_STR_TITLE_REMOTE_IMAGE                "Remote Image"
 #define DALI_DEMO_STR_TITLE_RENDERING_DRAW_LINE         "Draw Line"
 #define DALI_DEMO_STR_TITLE_RENDERING_DRAW_TRIANGLE     "Draw Triangle"
 #define DALI_DEMO_STR_TITLE_RENDERING_DRAW_CUBE         "Draw Cube"
 #define DALI_DEMO_STR_TITLE_RENDERING_TEXTURED_CUBE     "Textured Cube"
 #define DALI_DEMO_STR_TITLE_RENDERING_RAY_MARCHING      "Ray Marching"
 #define DALI_DEMO_STR_TITLE_RENDERING_RADIAL_PROGRESS   "Radial Progress"
-#define DALI_DEMO_STR_TITLE_REFRACTION                  "Refract Effect"
 #define DALI_DEMO_STR_TITLE_RENDERER_STENCIL            "Renderer Stencils"
 #define DALI_DEMO_STR_TITLE_SIMPLE_VISUALS_CONTROL      "Simple Visuals Control"
 #define DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI             "Script Based UI"