/* * Copyright (c) 2017 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 #include #include #include #include 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; }; int DALI_EXPORT_API main(int argc, char **argv) { Application application = Application::New(&argc, &argv, ""); MyTester test(application); application.MainLoop(); return 0; }