# Copyright (c) 2018-2019 Jan Van Winkel <jan.van_winkel@dxplore.eu>
# SPDX-License-Identifier: Apache-2.0

menu "Objects"

config LVGL_OBJ_REALIGN
	bool "Object realign support"
	help
	  Enable object realign support

choice
	prompt "Extend objects clickable area"
	default LVGL_EXT_CLICK_AREA_OFF

	config LVGL_EXT_CLICK_AREA_OFF
		bool "Disabled"

	config LVGL_EXT_CLICK_AREA_TINY
		bool "Only horizontally and vertical"

	config LVGL_EXT_CLICK_AREA_FULL
		bool "Full flexibility"

endchoice

config LVGL_OBJ_LABEL
	bool "Label Object"
	help
	  Enable label support

if LVGL_OBJ_LABEL

config LVGL_OBJ_LABEL_SCROLL_SPEED
	int "Label scroll speed"
	default 25
	help
	  Scroll speed in pixels per second if scroll mode is enabled for a label

config LVGL_OBJ_LABEL_TEXT_SEL
	bool "Enable label text selection"
	help
	  Enable label text selection

config LVGL_OBJ_LABEL_WAIT_CHAR_COUNT
	int "Waiting period for label animation"
	default 3
	help
	  Waiting period at beginning/end of the label animation cycle

config LVGL_OBJ_LABEL_LONG_TXT_HINT
	bool "Enable long text hint for labels"
	help
	  Enable support for long text hints

endif # LVGL_OBJ_LABEL

config LVGL_OBJ_IMAGE
	bool "Image Object"
	depends on LVGL_OBJ_LABEL
	help
	  Enable image object support

config LVGL_OBJ_LINE
	bool "Line Object"
	help
	  Enable line object support

config LVGL_OBJ_ARC
	bool "Arc Object"
	help
	  Enable arc object support

config LVGL_OBJ_CONTAINER
	bool "Container Object"
	help
	  Enable container object support

config LVGL_OBJ_PAGE
	bool "Page object"
	depends on LVGL_OBJ_CONTAINER
	help
	  Enable page object support

config LVGL_OBJ_PAGE_DEF_ANIM_TIME
	int "Default page focus animation time"
	default 400
	depends on LVGL_OBJ_PAGE
	help
	  Default page focus animation time in milliseconds

config LVGL_OBJ_WINDOW
	bool "Window object"
	depends on LVGL_OBJ_CONTAINER && LVGL_OBJ_BUTTON && LVGL_OBJ_LABEL && LVGL_OBJ_IMAGE && LVGL_OBJ_PAGE
	help
	  Enable window object support

config LVGL_OBJ_TAB_VIEW
	bool "Tab view object"
	depends on LVGL_OBJ_PAGE && LVGL_OBJ_BUTTON_MATRIX
	help
	  Enable tab view object support

config LVGL_OBJ_TAB_VIEW_ANIMATION_TIME
	int "Tab view animation time"
	default 300
	depends on LVGL_OBJ_TAB_VIEW
	help
	  Tab view animation time in milliseconds

config LVGL_OBJ_TILE_VIEW
	bool "Tile view object"
	depends on LVGL_OBJ_PAGE
	help
	  Enable tile view object support

config LVGL_OBJ_TILE_VIEW_ANIMATION_TIME
	int "Tile view animation time"
	default 300
	depends on LVGL_OBJ_TILE_VIEW
	help
	  Tile view animation time in milliseconds

config LVGL_OBJ_CALENDAR
	bool "Calendar object"
	help
	  Enable calendar object support

config LVGL_OBJ_PRELOAD
	bool "Pre-load object"
	depends on LVGL_OBJ_ARC
	help
	  Enabled pre-load object support

if	LVGL_OBJ_PRELOAD

config LVGL_OBJ_PRELOAD_DEF_ARC_LENGTH
	int "Default arc length"
	range 1 360
	default 60
	help
	  Default arc length for pre-load in degrees

config LVGL_OBJ_PRELOAD_DEF_SPIN_TIME
	int "Default spin time"
	default 1000
	help
	  Default spin time for pre-load in ms

choice
	prompt "Default pre-load animation type"
	default LVGL_OBJ_PRELOAD_DEF_ANIMATION_SPIN_ARC
	help
	  Default pre-load animation type

	config LVGL_OBJ_PRELOAD_DEF_ANIMATION_SPIN_ARC
		bool "Spinning Arc"

	config LVGL_OBJ_PRELOAD_DEF_ANIMATION_FILL
		bool "Fill"

endchoice
endif

config LVGL_OBJ_CANVAS
	bool "Canvas object"
	depends on LVGL_OBJ_IMAGE
	help
	  Enabled canvas object support

config LVGL_OBJ_BAR
	bool "Bar object"
	help
	  Enable bar object support

config LVGL_OBJ_LINE_METER
	bool "Line meter object"
	help
	  Enable line meter object support

config LVGL_OBJ_GAUGE
	bool "Gauge object"
	depends on LVGL_OBJ_BAR && LVGL_OBJ_LINE_METER
	help
	  Enable gauge object support

config LVGL_OBJ_CHART
	bool "Chart object"
	help
	  Enable chart object support

config LVGL_OBJ_CHART_AXIS_TICK_LABEL_MAX_LEN
	int "Maximum length of axis label"
	default 20
	depends on LVGL_OBJ_CHART
	help
	  Maximum length of axis label

config LVGL_OBJ_TABLE
	bool "Table object"
	depends on LVGL_OBJ_LABEL
	help
	  Enable table object support

config LVGL_OBJ_TABLE_COLUMN_MAX
	int "Maximum number of table columns"
	default 12
	depends on LVGL_OBJ_TABLE
	help
	  Maximum number of columns to support in a table

config LVGL_OBJ_LED
	bool "LED object"
	help
	  Enable LED object support

config LVGL_OBJ_MSG_BOX
	bool "Message box object"
	depends on LVGL_OBJ_BUTTON_MATRIX && LVGL_OBJ_LABEL
	help
	  Enable message box object support

config LVGL_OBJ_TEXT_AREA
	bool "Text area object"
	depends on LVGL_OBJ_LABEL && LVGL_OBJ_PAGE
	help
	  Enable text area object support

if LVGL_OBJ_TEXT_AREA

config LVGL_OBJ_TEXT_AREA_CURSOR_BLINK_TIME
	int "Cursor Blink Time"
	default 400
	help
	  Text area cursor blink time in milliseconds

config LVGL_OBJ_TEXT_AREA_PWD_SHOW_TIME
	int "Label scroll speed"
	default 1500
	help
	  Password character show time in milliseconds

endif

config LVGL_OBJ_SPINBOX
	bool "Spinbox object"
	depends on LVGL_OBJ_TEXT_AREA
	help
	  Enable spinbox object support

config LVGL_OBJ_BUTTON
	bool "Button object"
	depends on LVGL_OBJ_CONTAINER
	help
	  Enable button object support

if LVGL_OBJ_BUTTON

config LVGL_OBJ_BUTTON_INK_EFFECT
	bool "Enable ink effect"
	help
	  Enable ink, press, effect for buttons

config LVGL_OBJ_IMG_BUTTON
	bool "Image Button"
	help
	  Enable image button object support

config LVGL_OBJ_IMG_BUTTON_TILED
	bool "Image button tile support"
	depends on LVGL_OBJ_IMG_BUTTON
	help
	  Enable tile support for image button

endif

config LVGL_OBJ_BUTTON_MATRIX
	bool "Button Matrix object"
	help
	  Enable button matrix object support

config LVGL_OBJ_KEYBOARD
	bool "Keyboard object"
	depends on LVGL_OBJ_BUTTON_MATRIX
	help
	  Enable keyboard object support

config LVGL_OBJ_CHECK_BOX
	bool "Check box object"
	depends on LVGL_OBJ_BUTTON && LVGL_OBJ_LABEL
	help
	  Enable check box object support

config LVGL_OBJ_LIST
	bool "List object"
	depends on LVGL_OBJ_BUTTON && LVGL_OBJ_LABEL && LVGL_OBJ_PAGE
	help
	  Enable list object support

config LVGL_OBJ_LIST_FOCUS_TIME
	int "List focus time"
	default 100
	depends on LVGL_OBJ_LIST
	help
	  List focus animation time in milliseconds

config LVGL_OBJ_COLOR_PICKER
	bool "Color picker object"
	help
	  Enable color picker object support

config LVGL_OBJ_DROP_DOWN_LIST
	bool "Drop Down List object"
	depends on LVGL_OBJ_LABEL && LVGL_OBJ_PAGE
	help
	  Enable drop down list object support

config LVGL_OBJ_DROP_DOWN_LIST_ANIM_TIME
	int "Drop Down list animation time"
	default 200
	depends on LVGL_OBJ_DROP_DOWN_LIST
	help
	  Drop down list animation time in milliseconds

config LVGL_OBJ_ROLLER
	bool "Roller object"
	depends on LVGL_OBJ_DROP_DOWN_LIST
	help
	  Enable roller object support

if LVGL_OBJ_ROLLER

config LVGL_OBJ_ROLLER_ANIM_TIME
	int "Roller animation time"
	default 200
	help
	  Roller animation time in milliseconds

config LVGL_OBJ_ROLLER_INF_PAGES
	int "Number of pages for infinite roller"
	default 7
	help
	  Number of extra pages in case the roller is infinite

endif

config LVGL_OBJ_SLIDER
	bool "Slider object"
	depends on LVGL_OBJ_BAR
	help
	  Enable slider object support

config LVGL_OBJ_SWITCH
	bool "Switch object"
	depends on LVGL_OBJ_SLIDER
	help
	  Enable switch object support

endmenu
