2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include <dali/devel-api/adaptor-framework/style-monitor.h>
23 #include <dali-toolkit-test-suite-utils.h>
24 #include <dali-toolkit/dali-toolkit.h>
25 #include <dali/integration-api/events/touch-event-integ.h>
26 #include <dali-toolkit/devel-api/builder/builder.h>
27 #include <test-button.h>
28 #include <test-animation-data.h>
29 #include <toolkit-style-monitor.h>
30 #include <dummy-control.h>
31 #include <dali-toolkit/devel-api/controls/control-devel.h>
32 #include <dali-toolkit/devel-api/visuals/text-visual-properties.h>
33 #include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
34 #include <dali-toolkit/devel-api/visual-factory/visual-factory.h>
35 #include <dali-toolkit/devel-api/visual-factory/visual-base.h>
36 #include <dali-toolkit/public-api/styling/style-manager.h>
37 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
38 #include <dali-toolkit/devel-api/styling/style-manager-devel.h>
39 #include <dali/integration-api/events/key-event-integ.h>
42 using namespace Dali::Toolkit;
46 std::string defaultTheme;
48 } // anonymous namespace
53 void dali_style_manager_startup(void)
55 test_return_value = TET_UNDEF;
57 std::ifstream t("src/dali-toolkit-styling/default-theme.json");
58 defaultTheme = std::string((std::istreambuf_iterator<char>(t)), std::istreambuf_iterator<char>());
61 void dali_style_manager_cleanup(void)
63 test_return_value = TET_PASS;
67 Visual::Base CheckVisual( Impl::DummyControl& dummyImpl, Property::Index visualId, int type, const char* location )
69 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(visualId), true, location);
70 Visual::Base visual = dummyImpl.GetVisual(visualId);
71 DALI_TEST_EQUALS( (bool)visual, true, location );
73 visual.CreatePropertyMap( map );
74 Property::Value* value = map.Find( Visual::Property::TYPE );
75 DALI_TEST_EQUALS( value != NULL, true, location );
78 value->Get( visualType );
79 DALI_TEST_EQUALS( visualType, type, location );
84 Integration::Bitmap* CreateBitmap( unsigned int imageWidth, unsigned int imageHeight, unsigned int initialColor, Pixel::Format pixelFormat )
86 Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN );
87 Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight );
88 unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat );
90 memset( pixbuffer, initialColor, imageHeight * imageWidth * bytesPerPixel );
95 Integration::ResourcePointer CustomizeNinePatch( TestApplication& application,
96 unsigned int ninePatchImageWidth,
97 unsigned int ninePatchImageHeight)
99 TestPlatformAbstraction& platform = application.GetPlatform();
101 Pixel::Format pixelFormat = Pixel::RGBA8888;
103 tet_infoline("Create Bitmap");
104 platform.SetClosestImageSize(Vector2( ninePatchImageWidth, ninePatchImageHeight));
105 Integration::Bitmap* bitmap = CreateBitmap( ninePatchImageWidth, ninePatchImageHeight, 0xFF, pixelFormat );
107 tet_infoline("Getting resource");
108 Integration::ResourcePointer resourcePtr(bitmap);
109 platform.SetSynchronouslyLoadedResource( resourcePtr);
114 int UtcDaliStyleManagerConstructorP(void)
116 ToolkitTestApplication application;
118 tet_infoline(" UtcDaliStyleManagerConstructorP");
119 StyleManager styleManager;
120 DALI_TEST_CHECK( !styleManager);
124 int UtcDaliStyleManagerCopyConstructorP(void)
126 TestApplication application;
128 StyleManager styleManager = StyleManager::Get();
129 StyleManager copyOfStyleManager( styleManager );
131 DALI_TEST_CHECK( copyOfStyleManager );
135 int UtcDaliStyleManagerAssignmentOperatorP(void)
137 TestApplication application;
139 StyleManager styleManager = StyleManager::Get();
140 StyleManager copyOfStyleManager = styleManager;
142 DALI_TEST_CHECK( copyOfStyleManager );
143 DALI_TEST_CHECK( copyOfStyleManager == styleManager );
147 int UtcDaliStyleManagerGet(void)
149 ToolkitTestApplication application;
151 tet_infoline(" UtcDaliStyleManagerGet");
155 type = TypeRegistry::Get().GetTypeInfo( "StyleManager" );
156 DALI_TEST_CHECK( type );
157 BaseHandle handle = type.CreateInstance();
158 DALI_TEST_CHECK( handle );
160 StyleManager manager;
162 manager = StyleManager::Get();
163 DALI_TEST_CHECK(manager);
165 StyleManager newManager = StyleManager::Get();
166 DALI_TEST_CHECK(newManager);
168 // Check that focus manager is a singleton
169 DALI_TEST_CHECK(manager == newManager);
176 class StyleChangedSignalChecker : public ConnectionTracker
179 StyleChangedSignalChecker()
184 void OnStyleChanged(StyleManager styleManager, StyleChange::Type type)
198 } // anonymous namespace
200 int UtcDaliStyleManagerApplyTheme(void)
202 ToolkitTestApplication application;
204 tet_infoline( "Testing StyleManager ApplyTheme" );
210 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Verbose\"\n"
216 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
217 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
228 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
229 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
234 // Add 2 buttons to test how many times the signal is sent
235 Test::TestButton testButton = Test::TestButton::New();
236 Test::TestButton testButton2 = Test::TestButton::New();
237 Stage::GetCurrent().Add( testButton );
238 Stage::GetCurrent().Add( testButton2 );
239 StyleChangedSignalChecker styleChangedSignalHandler;
240 StyleChangedSignalChecker styleChangedSignalHandler2;
241 StyleManager styleManager = StyleManager::Get();
243 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
246 application.SendNotification();
247 application.Render();
249 tet_infoline("Apply the style");
251 std::string themeFile("ThemeOne");
252 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
253 StyleManager::Get().ApplyTheme(themeFile);
255 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
256 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
258 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
259 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
261 tet_infoline("Testing that the signal handler is called only once");
262 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
264 tet_infoline("Override the background property");
265 testButton.SetProperty( Test::TestButton::Property::BACKGROUND_COLOR, Color::GREEN );
266 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
267 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
268 DALI_TEST_EQUALS( bgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
269 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
272 application.SendNotification();
273 application.Render();
275 tet_infoline("Apply the style again");
277 styleChangedSignalHandler.signalCount = 0;
278 StyleManager::Get().ApplyTheme(themeFile);
280 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
281 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
283 tet_infoline("Check that the property is changed");
284 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
285 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
286 tet_infoline("Testing that the signal handler is called only once");
287 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
289 tet_infoline( "Load a different stylesheet");
291 tet_infoline("Apply the new style");
292 std::string themeFile2("ThemeTwo");
293 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
295 styleChangedSignalHandler.signalCount = 0;
296 StyleManager::Get().ApplyTheme(themeFile2);
298 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
299 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
301 tet_infoline("Check that the properties change, but the signal gets sent only once");
302 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
303 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
304 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
310 int UtcDaliStyleManagerApplyDefaultTheme(void)
312 tet_infoline( "Testing StyleManager ApplyTheme" );
314 const char* defaultTheme =
318 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"Concise\"\n"
324 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
325 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
329 // Bg: Yellow, Fg: Blue
331 const char* appTheme =
337 " \"backgroundColor\":[1.0,0.0,1.0,1.0],\n"
338 " \"foregroundColor\":[0.0,1.0,0.0,1.0]\n"
342 // Bg::Magenta, Fg:Green
344 std::string filepath(TEST_RESOURCE_DIR "");
346 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
348 ToolkitTestApplication application;
350 Test::TestButton testButton = Test::TestButton::New();
351 Stage::GetCurrent().Add( testButton );
352 StyleChangedSignalChecker styleChangedSignalHandler;
353 StyleManager styleManager = StyleManager::Get();
355 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
358 application.SendNotification();
359 application.Render();
362 Property::Value defaultBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
363 Property::Value defaultFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
365 tet_infoline("Apply the style");
367 std::string themeFile("ThemeOne");
368 Test::StyleMonitor::SetThemeFileOutput(themeFile, appTheme);
369 StyleManager::Get().ApplyTheme(themeFile);
371 Property::Value bgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
372 Property::Value fgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
374 DALI_TEST_EQUALS( bgColor, Property::Value(Color::MAGENTA), 0.001, TEST_LOCATION );
375 DALI_TEST_EQUALS( fgColor, Property::Value(Color::GREEN), 0.001, TEST_LOCATION );
377 tet_infoline("Testing that the signal handler is called only once");
378 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
379 tet_infoline("Revert the style");
381 styleChangedSignalHandler.signalCount = 0;
382 StyleManager::Get().ApplyDefaultTheme();
384 bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
385 fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
387 tet_infoline("Check that the property is reverted");
388 DALI_TEST_EQUALS( bgColor, defaultBgColor, 0.001, TEST_LOCATION );
389 DALI_TEST_EQUALS( fgColor, defaultFgColor, 0.001, TEST_LOCATION );
390 DALI_TEST_EQUALS( bgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
391 DALI_TEST_EQUALS( fgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
392 tet_infoline("Testing that the signal handler is called only once");
393 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
399 int UtcDaliStyleManagerSetStyleConstantP(void)
401 ToolkitTestApplication application;
403 tet_infoline( " UtcDaliStyleManagerSetStyleConstantP" );
405 StyleManager manager = StyleManager::Get();
407 std::string key( "key" );
408 Property::Value value( 100 );
410 manager.SetStyleConstant( key, value );
412 Property::Value returnedValue;
413 manager.GetStyleConstant( key, returnedValue );
415 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
420 int UtcDaliStyleManagerGetStyleConstantP(void)
422 ToolkitTestApplication application;
424 tet_infoline( " UtcDaliStyleManagerGetStyleConstantP" );
426 StyleManager manager = StyleManager::Get();
428 std::string key( "key" );
429 Property::Value value( 100 );
431 manager.SetStyleConstant( key, value );
433 Property::Value returnedValue;
434 manager.GetStyleConstant( key, returnedValue );
436 DALI_TEST_CHECK( value.Get<int>() == returnedValue.Get<int>() );
440 int UtcDaliStyleManagerGetStyleConstantN(void)
442 ToolkitTestApplication application;
444 tet_infoline( " UtcDaliStyleManagerGetStyleConstantN" );
446 StyleManager manager = StyleManager::Get();
448 std::string key2( "key2" );
449 Property::Value returnedValue2;
450 DALI_TEST_CHECK( !manager.GetStyleConstant( key2, returnedValue2 ) );
455 int UtcDaliStyleManagerApplyStyle(void)
457 ToolkitTestApplication application;
459 tet_infoline( "UtcDaliStyleManagerApplyStyle - test that a style can be applied to a single button" );
465 " \"CONFIG_SCRIPT_LOG_LEVEL\":\"General\"\n"
471 " \"backgroundColor\":[1.0,1.0,0.0,1.0],\n"
472 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
483 " \"backgroundColor\":[1.0,0.0,0.0,1.0],\n"
484 " \"foregroundColor\":[0.0,1.0,1.0,1.0]\n"
490 Test::TestButton testButton = Test::TestButton::New();
491 Test::TestButton testButton2 = Test::TestButton::New();
492 Stage::GetCurrent().Add( testButton );
493 Stage::GetCurrent().Add( testButton2 );
494 StyleChangedSignalChecker styleChangedSignalHandler;
495 StyleManager styleManager = StyleManager::Get();
497 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
499 tet_infoline("Apply the style");
501 std::string themeFile("ThemeOne");
502 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
503 styleManager.ApplyTheme(themeFile);
506 application.SendNotification();
507 application.Render();
509 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
510 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
512 // Apply the style to the test button:
513 std::string themeFile2("ThemeTwo");
514 Test::StyleMonitor::SetThemeFileOutput(themeFile2, json2);
515 styleManager.ApplyStyle( testButton, themeFile2, "testbutton" );
517 tet_infoline("Check that the properties change for the first button");
518 Property::Value bgColor = testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
519 Property::Value fgColor = testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
520 DALI_TEST_EQUALS( bgColor, Property::Value(Color::RED), 0.001, TEST_LOCATION );
521 DALI_TEST_EQUALS( fgColor, Property::Value(Color::CYAN), 0.001, TEST_LOCATION );
523 DALI_TEST_NOT_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
524 DALI_TEST_NOT_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
526 tet_infoline("Check that the properties remain the same for the second button");
527 bgColor = testButton2.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR);
528 fgColor = testButton2.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR);
529 DALI_TEST_EQUALS( bgColor, themedBgColor, 0.001, TEST_LOCATION );
530 DALI_TEST_EQUALS( fgColor, themedFgColor, 0.001, TEST_LOCATION );
536 int UtcDaliStyleManagerIncludeStyleP(void)
538 ToolkitTestApplication application;
540 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works" );
546 " \"src/dali-toolkit-styling/theme2.json\"\n"
552 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
558 Test::TestButton testButton = Test::TestButton::New();
559 Test::TestButton testButton2 = Test::TestButton::New();
560 Stage::GetCurrent().Add( testButton );
561 Stage::GetCurrent().Add( testButton2 );
562 StyleChangedSignalChecker styleChangedSignalHandler;
563 StyleManager styleManager = StyleManager::Get();
565 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
567 tet_infoline("Apply the style");
569 std::string themeFile("ThemeOne");
570 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
572 styleManager.ApplyTheme(themeFile);
575 application.SendNotification();
576 application.Render();
578 Property::Value themedBgColor( testButton.GetProperty(Test::TestButton::Property::BACKGROUND_COLOR) );
579 Property::Value themedFgColor( testButton.GetProperty(Test::TestButton::Property::FOREGROUND_COLOR) );
581 DALI_TEST_EQUALS( themedBgColor, Property::Value(Color::YELLOW), 0.001, TEST_LOCATION );
582 DALI_TEST_EQUALS( themedFgColor, Property::Value(Color::BLUE), 0.001, TEST_LOCATION );
588 int UtcDaliStyleManagerIncludeStyleN(void)
590 ToolkitTestApplication application;
592 tet_infoline( "UtcDaliStyleManagerIncludeStyle - test that style sheet inclusion works, but included stylesheet is bad json" );
598 " \"src/dali-toolkit-styling/theme3.json\"\n"
604 " \"foregroundColor\":[0.0,0.0,1.0,1.0]\n"
610 Test::TestButton testButton = Test::TestButton::New();
611 Test::TestButton testButton2 = Test::TestButton::New();
612 Stage::GetCurrent().Add( testButton );
613 Stage::GetCurrent().Add( testButton2 );
614 StyleChangedSignalChecker styleChangedSignalHandler;
615 StyleManager styleManager = StyleManager::Get();
617 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
619 tet_infoline("Apply the style");
621 std::string themeFile("ThemeOne");
622 Test::StyleMonitor::SetThemeFileOutput(themeFile, json1);
626 styleManager.ApplyTheme(themeFile);
628 catch( Dali::DaliException& e )
630 DALI_TEST_ASSERT( e, "!\"Cannot parse JSON\"", TEST_LOCATION );
637 int UtcDaliStyleManagerStyleChangedSignalFontFamily(void)
639 tet_infoline("Test that the StyleChange signal is fired when the font family is altered" );
640 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
643 ToolkitTestApplication application;
645 std::string labelStr("Label");
646 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
647 Stage::GetCurrent().Add( label );
649 Toolkit::TextField field = Toolkit::TextField::New();
650 Stage::GetCurrent().Add( field );
652 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
653 Stage::GetCurrent().Add( editor );
655 StyleChangedSignalChecker styleChangedSignalHandler;
656 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
657 StyleManager styleManager = StyleManager::Get();
659 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
661 Test::StyleMonitor::SetDefaultFontFamily("Times New Roman");
663 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_CHANGE);
665 tet_infoline("Test that the StyleChanged signal is received only once");
667 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
669 // Check that the label's font style has been altered
670 Property::Value family = label.GetProperty(TextLabel::Property::FONT_FAMILY);
671 std::string familyStr;
672 family.Get( familyStr );
674 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
676 // Check that the field's font style has been altered
677 family = field.GetProperty(TextField::Property::FONT_FAMILY);
678 family.Get( familyStr );
680 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
682 // Check that the editor's font style has been altered
683 family = editor.GetProperty(TextEditor::Property::FONT_FAMILY);
684 family.Get( familyStr );
686 DALI_TEST_EQUALS( familyStr, "Times New Roman", TEST_LOCATION);
691 int UtcDaliStyleManagerStyleChangedSignalFontSize(void)
693 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
695 const char* defaultTheme =
699 " \"textlabelFontSize0\":\n"
701 " \"pointSize\":10\n"
703 " \"textlabelFontSize1\":\n"
705 " \"pointSize\":10\n"
707 " \"textlabelFontSize2\":\n"
709 " \"pointSize\":12\n"
711 " \"textlabelFontSize3\":\n"
713 " \"pointSize\":14\n"
715 " \"textlabelFontSize4\":\n"
717 " \"pointSize\":16\n"
722 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
724 ToolkitTestApplication application;
726 std::string labelStr("Label");
727 Toolkit::TextLabel label = Toolkit::TextLabel::New(labelStr);
728 Stage::GetCurrent().Add( label );
730 Toolkit::TextLabel label2 = Toolkit::TextLabel::New(labelStr);
731 Stage::GetCurrent().Add( label2 );
733 StyleChangedSignalChecker styleChangedSignalHandler;
734 StyleMonitor styleMonitor = StyleMonitor::Get();
735 StyleManager styleManager = StyleManager::Get();
737 label.SetProperty(TextLabel::Property::POINT_SIZE, 10.0f);
739 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
741 Test::StyleMonitor::SetDefaultFontSize(2);
742 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
744 tet_infoline("Test that the StyleChanged signal is received only once");
745 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
747 tet_infoline("Test that the label's font size has been altered\n");
748 Property::Value pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
750 pointSizeValue.Get( pointSize );
752 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
754 styleChangedSignalHandler.signalCount = 0;
756 Test::StyleMonitor::SetDefaultFontSize(4);
757 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
759 tet_infoline("Test that the StyleChanged signal is received only once");
760 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
762 // Check that the label's font style has been altered
763 pointSizeValue = label.GetProperty(TextLabel::Property::POINT_SIZE);
764 pointSizeValue.Get( pointSize );
766 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
773 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextField(void)
775 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
777 const char* defaultTheme =
781 " \"textfieldFontSize0\":\n"
785 " \"textfieldFontSize1\":\n"
787 " \"pointSize\":10\n"
789 " \"textfieldFontSize2\":\n"
791 " \"pointSize\":12\n"
793 " \"textfieldFontSize3\":\n"
795 " \"pointSize\":14\n"
797 " \"textfieldFontSize4\":\n"
799 " \"pointSize\":16\n"
804 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
806 ToolkitTestApplication application;
808 std::string fieldStr("Field");
809 Toolkit::TextField field = Toolkit::TextField::New();
810 field.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
811 Stage::GetCurrent().Add( field );
813 Toolkit::TextField field2 = Toolkit::TextField::New();
814 Stage::GetCurrent().Add( field2 );
815 field2.SetProperty( Toolkit::TextField::Property::TEXT, fieldStr );
817 StyleChangedSignalChecker styleChangedSignalHandler;
818 StyleMonitor styleMonitor = StyleMonitor::Get();
819 StyleManager styleManager = StyleManager::Get();
821 field.SetProperty(TextField::Property::POINT_SIZE, 10.0f);
823 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
825 Test::StyleMonitor::SetDefaultFontSize(2);
826 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
828 tet_infoline("Test that the StyleChanged signal is received only once");
829 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
831 tet_infoline("Test that the field's font size has been altered\n");
832 Property::Value pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
834 pointSizeValue.Get( pointSize );
836 DALI_TEST_EQUALS( pointSize, 12.0f, 0.001, TEST_LOCATION );
838 styleChangedSignalHandler.signalCount = 0;
840 Test::StyleMonitor::SetDefaultFontSize(4);
841 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
843 tet_infoline("Test that the StyleChanged signal is received only once");
844 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
846 // Check that the field's font style has been altered
847 pointSizeValue = field.GetProperty(TextField::Property::POINT_SIZE);
848 pointSizeValue.Get( pointSize );
850 DALI_TEST_EQUALS( pointSize, 16.0f, 0.001, TEST_LOCATION );
856 int UtcDaliStyleManagerStyleChangedSignalFontSizeTextEditor(void)
858 tet_infoline("Test that the StyleChange signal is fired when the font size is altered" );
860 const char* defaultTheme =
864 " \"texteditorFontSize0\":\n"
866 " \"pointSize\":10\n"
868 " \"texteditorFontSize1\":\n"
870 " \"pointSize\":12\n"
872 " \"texteditorFontSize2\":\n"
874 " \"pointSize\":14\n"
876 " \"texteditorFontSize3\":\n"
878 " \"pointSize\":18\n"
880 " \"texteditorFontSize4\":\n"
882 " \"pointSize\":25\n"
887 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
889 ToolkitTestApplication application;
891 std::string editorStr("Editor");
892 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
893 editor.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
894 Stage::GetCurrent().Add( editor );
896 Toolkit::TextEditor editor2 = Toolkit::TextEditor::New();
897 Stage::GetCurrent().Add( editor2 );
898 editor2.SetProperty( Toolkit::TextEditor::Property::TEXT, editorStr );
900 StyleChangedSignalChecker styleChangedSignalHandler;
901 StyleMonitor styleMonitor = StyleMonitor::Get();
902 StyleManager styleManager = StyleManager::Get();
904 editor.SetProperty(TextEditor::Property::POINT_SIZE, 10.0f);
906 styleManager.StyleChangedSignal().Connect(&styleChangedSignalHandler, &StyleChangedSignalChecker::OnStyleChanged);
908 Test::StyleMonitor::SetDefaultFontSize(2);
909 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
911 tet_infoline("Test that the StyleChanged signal is received only once");
912 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
914 tet_infoline("Test that the editor's font size has been altered\n");
915 Property::Value pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
917 pointSizeValue.Get( pointSize );
919 DALI_TEST_EQUALS( pointSize, 14.0f, 0.001, TEST_LOCATION );
921 styleChangedSignalHandler.signalCount = 0;
923 Test::StyleMonitor::SetDefaultFontSize(4);
924 styleMonitor.StyleChangeSignal().Emit( styleMonitor, StyleChange::DEFAULT_FONT_SIZE_CHANGE);
926 tet_infoline("Test that the StyleChanged signal is received only once");
927 DALI_TEST_EQUALS( styleChangedSignalHandler.signalCount, 1, TEST_LOCATION );
929 // Check that the editor's font style has been altered
930 pointSizeValue = editor.GetProperty(TextEditor::Property::POINT_SIZE);
931 pointSizeValue.Get( pointSize );
933 DALI_TEST_EQUALS( pointSize, 25.0f, 0.001, TEST_LOCATION );
940 int UtcDaliStyleManagerSetState01(void)
942 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
943 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
946 ToolkitTestApplication application;
948 StyleChangedSignalChecker styleChangedSignalHandler;
949 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
950 StyleManager styleManager = StyleManager::Get();
952 DummyControl actor = DummyControl::New(true);
953 actor.SetStyleName("BasicControl");
954 Stage::GetCurrent().Add(actor);
956 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
957 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
959 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
960 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
961 Visual::Base labelVisual1 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
962 Property::Map labelMap;
963 labelVisual1.CreatePropertyMap( labelMap );
964 labelMap[TextVisual::Property::TEXT] = "New text";
965 VisualFactory factory = VisualFactory::Get();
966 labelVisual1 = factory.CreateVisual(labelMap);
967 dummyImpl.UnregisterVisual(DummyControl::Property::LABEL_VISUAL );
968 dummyImpl.RegisterVisual(DummyControl::Property::LABEL_VISUAL, labelVisual1 );
970 actor.SetProperty( DevelControl::Property::STATE, DevelControl::FOCUSED );
972 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
973 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
974 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::LABEL_VISUAL), true, TEST_LOCATION);
976 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
977 Visual::Base labelVisual2 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
978 DALI_TEST_CHECK( visual1 != visual2 );
979 DALI_TEST_CHECK( labelVisual1 != labelVisual2 );
981 labelVisual2.CreatePropertyMap( labelMap );
982 Property::Value* textValue = labelMap.Find( Toolkit::TextVisual::Property::TEXT, "text");
983 DALI_TEST_CHECK( textValue );
984 Property::Value* pointSizeValue = labelMap.Find( Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
985 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
986 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
987 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
990 actor.SetProperty( DevelControl::Property::STATE, DevelControl::DISABLED );
992 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
994 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
995 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
996 DALI_TEST_CHECK( !focusVisual );
997 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
999 DALI_TEST_CHECK( visual1 != visual3 );
1000 DALI_TEST_CHECK( visual2 != visual3 );
1002 Visual::Base labelVisual3 = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1003 DALI_TEST_CHECK( labelVisual2 != labelVisual3 );
1005 labelVisual2.CreatePropertyMap( labelMap );
1006 textValue = labelMap.Find(Toolkit::TextVisual::Property::TEXT, "text");
1007 DALI_TEST_CHECK( textValue );
1008 pointSizeValue = labelMap.Find(Toolkit::TextVisual::Property::POINT_SIZE, "pointSize");
1009 tet_infoline( "Check that the instance data has been copied to the new text visual\n");
1010 DALI_TEST_EQUALS( textValue->Get<std::string>(), "New text", TEST_LOCATION );
1011 DALI_TEST_EQUALS( pointSizeValue->Get<int>(), 10, TEST_LOCATION );
1016 int UtcDaliStyleManagerSetState02(void)
1018 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1019 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1022 ToolkitTestApplication application;
1024 StyleChangedSignalChecker styleChangedSignalHandler;
1025 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1026 StyleManager styleManager = StyleManager::Get();
1028 DummyControl actor = DummyControl::New(true);
1029 actor.SetStyleName("BasicControl");
1030 Stage::GetCurrent().Add(actor);
1032 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1033 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1035 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1036 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1038 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1039 Visual::Base visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1041 actor.SetProperty( DevelControl::Property::STATE,
1042 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1044 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1045 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1047 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1048 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), true, TEST_LOCATION);
1050 Visual::Base visual2 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1051 DALI_TEST_CHECK( visual1 != visual2 );
1053 actor.SetProperty( DevelControl::Property::STATE,
1054 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1056 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1057 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1059 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1061 Visual::Base visual3 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1063 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1064 DALI_TEST_CHECK( !testVisual );
1065 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1066 DALI_TEST_CHECK( !testVisual );
1067 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL2);
1068 DALI_TEST_CHECK( !testVisual );
1069 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1070 DALI_TEST_CHECK( testVisual );
1073 DALI_TEST_CHECK( visual1 != visual3 );
1074 DALI_TEST_CHECK( visual2 != visual3 );
1076 actor.SetProperty( DevelControl::Property::STATE,
1077 Property::Map().Add( "state", "NORMAL" ).Add("withTransitions", false));
1079 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1080 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1082 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOREGROUND_VISUAL), true, TEST_LOCATION);
1084 visual1 = dummyImpl.GetVisual(DummyControl::Property::FOREGROUND_VISUAL);
1085 DALI_TEST_CHECK( visual1 );
1087 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1088 DALI_TEST_CHECK( !focusVisual );
1089 DALI_TEST_EQUALS(dummyImpl.IsVisualEnabled(DummyControl::Property::FOCUS_VISUAL), false, TEST_LOCATION);
1096 int UtcDaliStyleManagerSetState03N(void)
1098 tet_infoline("Instantiate dummy control and test state transition without state style" );
1099 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1102 ToolkitTestApplication application;
1104 StyleChangedSignalChecker styleChangedSignalHandler;
1105 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1106 StyleManager styleManager = StyleManager::Get();
1108 DummyControl actor = DummyControl::New(true);
1109 actor.SetStyleName("NoStyles");
1110 Stage::GetCurrent().Add(actor);
1112 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1113 Property::Map propertyMap;
1114 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1115 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1116 VisualFactory factory = VisualFactory::Get();
1117 Visual::Base visual = factory.CreateVisual( propertyMap );
1118 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1120 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1121 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1123 actor.SetProperty( DevelControl::Property::STATE,
1124 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1126 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1127 DALI_TEST_CHECK( testVisual = visual );
1129 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1130 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1132 actor.SetProperty( DevelControl::Property::STATE,
1133 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1135 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1136 DALI_TEST_CHECK( testVisual = visual );
1138 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1139 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1145 int UtcDaliStyleManagerSetState04N(void)
1147 tet_infoline("Instantiate dummy control and test state transition with style without state" );
1148 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1151 ToolkitTestApplication application;
1153 StyleChangedSignalChecker styleChangedSignalHandler;
1154 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1155 StyleManager styleManager = StyleManager::Get();
1157 DummyControl actor = DummyControl::New(true);
1158 actor.SetStyleName("NoStateStyle");
1159 Stage::GetCurrent().Add(actor);
1161 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1162 Property::Map propertyMap;
1163 propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR);
1164 propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE);
1165 VisualFactory factory = VisualFactory::Get();
1166 Visual::Base visual = factory.CreateVisual( propertyMap );
1167 dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
1169 int state = actor.GetProperty<int>( DevelControl::Property::STATE );
1170 DALI_TEST_EQUALS( state, (int) DevelControl::NORMAL, TEST_LOCATION );
1172 actor.SetProperty( DevelControl::Property::STATE,
1173 Property::Map().Add( "state", "FOCUSED" ).Add("withTransitions", false));
1175 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1176 DALI_TEST_CHECK( testVisual = visual );
1178 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1179 DALI_TEST_EQUALS( state, (int) DevelControl::FOCUSED, TEST_LOCATION );
1181 actor.SetProperty( DevelControl::Property::STATE,
1182 Property::Map().Add( "state", "DISABLED" ).Add("withTransitions", false));
1184 testVisual = dummyImpl.GetVisual(DummyControl::Property::TEST_VISUAL);
1185 DALI_TEST_CHECK( testVisual = visual );
1187 state = actor.GetProperty<int>( DevelControl::Property::STATE );
1188 DALI_TEST_EQUALS( state, (int) DevelControl::DISABLED, TEST_LOCATION );
1193 int UtcDaliStyleManagerSetSubState01(void)
1195 tet_infoline("Instantiate dummy control and test state/visual/transition capture" );
1196 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1199 ToolkitTestApplication application;
1201 StyleChangedSignalChecker styleChangedSignalHandler;
1202 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1203 StyleManager styleManager = StyleManager::Get();
1205 DummyControl actor = DummyControl::New(true);
1206 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1207 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1208 actor.SetStyleName("ComplexControl");
1209 Stage::GetCurrent().Add(actor);
1211 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1213 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1215 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1216 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1217 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1219 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1221 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1222 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1223 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::COLOR, TEST_LOCATION);
1225 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1227 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1228 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1229 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1235 int UtcDaliStyleManagerSetSubState02(void)
1237 tet_infoline("Instantiate complex control and test state/substate change" );
1238 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json",
1241 ToolkitTestApplication application;
1243 StyleChangedSignalChecker styleChangedSignalHandler;
1244 Dali::StyleMonitor styleMonitor = Dali::StyleMonitor::Get();
1245 StyleManager styleManager = StyleManager::Get();
1247 DummyControl actor = DummyControl::New(true);
1248 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1249 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1250 tet_infoline( "Setting state to NORMAL/SELECTED before re-styling\n");
1252 actor.SetStyleName("ComplexControl");
1253 Stage::GetCurrent().Add(actor);
1255 Integration::ResourcePointer ninePatch = CustomizeNinePatch( application, 30, 30 );
1257 Impl::DummyControl& dummyImpl = static_cast<Impl::DummyControl&>(actor.GetImplementation());
1259 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1260 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1262 actor.SetProperty(DevelControl::Property::SUB_STATE, "UNSELECTED");
1263 tet_infoline( "Changing substate to UNSELECTED - check visual changes\n");
1265 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1266 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::COLOR, TEST_LOCATION);
1268 actor.SetProperty(DevelControl::Property::STATE, "FOCUSED");
1269 tet_infoline( "Changing state to FOCUSED - check visual changes\n");
1271 Visual::Base fgVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1272 Visual::Base focusVisual1 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::DevelVisual::N_PATCH, TEST_LOCATION);
1274 actor.SetProperty(DevelControl::Property::SUB_STATE, "SELECTED");
1275 tet_infoline( "Changing substate to SELECTED - Expect no change\n");
1277 Visual::Base fgVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1278 Visual::Base focusVisual2 = CheckVisual( dummyImpl, DummyControl::Property::FOCUS_VISUAL, Toolkit::DevelVisual::N_PATCH, TEST_LOCATION);
1280 DALI_TEST_CHECK( fgVisual1 == fgVisual2 );
1281 DALI_TEST_CHECK( focusVisual1 == focusVisual2 );
1283 actor.SetProperty(DevelControl::Property::STATE, "NORMAL");
1284 tet_infoline( "Changing state to NORMAL - Expect to change to NORMAL/SELECTED \n");
1286 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1287 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL2, Toolkit::Visual::GRADIENT, TEST_LOCATION);
1289 Visual::Base focusVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1290 DALI_TEST_CHECK( ! focusVisual );
1292 actor.SetProperty(DevelControl::Property::STATE, "DISABLED");
1293 tet_infoline( "Changing state to DISABLED - Expect to change to DISABLED/SELECTED \n");
1295 CheckVisual( dummyImpl, DummyControl::Property::FOREGROUND_VISUAL, Toolkit::Visual::COLOR, TEST_LOCATION);
1296 CheckVisual( dummyImpl, DummyControl::Property::TEST_VISUAL, Toolkit::Visual::IMAGE, TEST_LOCATION);
1298 Visual::Base testVisual = dummyImpl.GetVisual(DummyControl::Property::FOCUS_VISUAL);
1299 DALI_TEST_CHECK( ! testVisual );
1300 testVisual = dummyImpl.GetVisual(DummyControl::Property::LABEL_VISUAL);
1301 DALI_TEST_CHECK( ! testVisual );
1307 int UtcDaliStyleManagerConfigSectionTest(void)
1309 tet_infoline("Test that the properties in config section are works" );
1311 const char* defaultTheme =
1315 " \"alwaysShowFocus\":false,\n"
1316 " \"clearFocusOnEscape\":false\n"
1323 Test::StyleMonitor::SetThemeFileOutput( DALI_STYLE_DIR "dali-toolkit-default-theme.json", defaultTheme );
1325 ToolkitTestApplication application;
1327 Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
1329 Property::Map config = Toolkit::DevelStyleManager::GetConfigurations( styleManager );
1330 bool alwaysShowFocus = config["alwaysShowFocus"].Get<bool>();
1331 DALI_TEST_CHECK( !alwaysShowFocus );
1332 bool clearFocusOnEscape = config["clearFocusOnEscape"].Get<bool>();
1333 DALI_TEST_CHECK( !clearFocusOnEscape );
1336 Toolkit::TextEditor editor = Toolkit::TextEditor::New();
1337 editor.SetKeyboardFocusable( true );
1338 Stage::GetCurrent().Add( editor );
1340 Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( editor );
1342 application.ProcessEvent( Integration::KeyEvent( "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::Down, "", DevelDevice::Class::NONE, DevelDevice::Subclass::NONE ) );
1343 application.SendNotification();
1344 application.Render();