#include "TuiLayout.h"
#include "TuiLayout_w720.h"
#include "Vendor_Interface.h"
#include "TZ_Vendor_debug_tl.h"
#include <string.h>

#define W720_SCREEN_WIDTH				720
#define W720_SCREEN_HEIGHT_DEFAULT		1520
#define W720_SCREEN_HEIGHT_WINNER		1680

void initLayoutW720() {
	//screen
	SCREEN_PIX_PER_DP							= 2;
	SCREEN_PUNCHCUT_HEIGHT						= 20 * SCREEN_PIX_PER_DP;

	getScreenInfo(&SCREEN_WIDTH, &SCREEN_HEIGHT);
	DBG_LOG("Screen size: %d, %d", SCREEN_WIDTH, SCREEN_HEIGHT);
	switch (SCREEN_HEIGHT) {
	case W720_SCREEN_HEIGHT_WINNER:
		setScreenType(SCREEN_TYPE_WINNER_SUB);
		break;
	case W720_SCREEN_HEIGHT_DEFAULT:
	default:
		setScreenType(SCREEN_TYPE_DEFAULT);
		break;
	}

	BACKUP_MNEMONIC_LIST_COLUMN_COUNT			= 2;
	BACKUP_MNEMONIC_LIST_TOP_MARGIN				= 219 * SCREEN_PIX_PER_DP;

	BACKUP_MNEMONIC_LIST_SIDE_MARGIN			= 45 * SCREEN_PIX_PER_DP;
	BACKUP_MNEMONIC_LIST_TEXTBOX_HEIGHT			= 20 * SCREEN_PIX_PER_DP;
	BACKUP_MNEMONIC_LIST_NUMBER_WIDTH			= 25 * SCREEN_PIX_PER_DP;
	BACKUP_MNEMONIC_LIST_NUMBER_DISTANCE		= 6 * SCREEN_PIX_PER_DP;
	BACKUP_MNEMONIC_LIST_TEXTBOX_DISTANCE		= 33 * SCREEN_PIX_PER_DP;
	BACKUP_MNEMONIC_LIST_TEXTBOX_LINE_DISTANCE	= 11 * SCREEN_PIX_PER_DP;

	BACKUP_QUIZ_TEXTINPUT_START_TOP_MARGIN		= 215 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_TEXTINPUT_LEFT_MARGIN			= 59 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_TEXTINPUT_WIDTH					= 160 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_TEXTINPUT_HEIGHT				= 26 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_TEXTINPUT_LINE_DISTANCE			= 8 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_BUTTON_START_TOP_MARGIN			= BACKUP_QUIZ_TEXTINPUT_START_TOP_MARGIN;
	BACKUP_QUIZ_BUTTON_LEFT_MARGIN				= 13 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_BUTTON_WIDTH					= 69 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_BUTTON_HEIGHT					= 36 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_NEXT_DISTANCE					= 99 * SCREEN_PIX_PER_DP;
	BACKUP_QUIZ_KEYPAD_START_X					= 0;
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		BACKUP_QUIZ_KEYPAD_START_Y				= 594 * SCREEN_PIX_PER_DP;
	} else {
		BACKUP_QUIZ_KEYPAD_START_Y				= 513 * SCREEN_PIX_PER_DP;
	}

	//confirm
	CONFIRM_TEXT_SIDE_MARGIN					= 24 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_ADDRESS_HEIGHT					= 40 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_2ND_ADDRESS_Y_DISTANCE         = 40 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_AREA_WIDTH						= 312 * SCREEN_PIX_PER_DP;
	CONFIRM_DIVIDER_SIDE_MARGIN					= 20 * SCREEN_PIX_PER_DP;
	CONFIRM_DIVIDER_LINE_DISTANCE				= 20 * SCREEN_PIX_PER_DP;
	CONFIRM_DIVIDER_LINE_DISTANCE2              = 15 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_TOKEN_NAME_LINE_DISTANCE       = 20 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_TOKEN_AMOUNT_LINE_DISTANCE     = 20 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_AMOUNT_LINE_DISTANCE			= 20 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_GAS_SIDE_MARGIN				= 90 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_GAS_PRICE_LINE_DISTANCE		= 10 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_GAS_LIMIT_LINE_DISTANCE		= 5 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_DATA_LINE_DISTANCE				= 38 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_DATA_LENGTH_LINE_DISTANCE      = 15 * SCREEN_PIX_PER_DP;
	CONFIRM_TEXT_DATA_LINE_FIXED_DISTANCE       = 56 * SCREEN_PIX_PER_DP;

	//keypad
	CONTROL_KEYPAD_BUTTON_DISTANCE_WIDTH		= 7 * SCREEN_PIX_PER_DP;
	CONTROL_KEYPAD_BUTTON_DISTANCE_HEIGHT		= 8 * SCREEN_PIX_PER_DP;
	CONTROL_KEYPAD_BUTTON_MARGIN_WIDTH			= CONTROL_KEYPAD_BUTTON_DISTANCE_WIDTH / 2;
	CONTROL_KEYPAD_BUTTON_MARGIN_HEIGHT			= CONTROL_KEYPAD_BUTTON_DISTANCE_HEIGHT / 2;
	CONTROL_KEYPAD_BUTTON_WIDTH					= 28 * SCREEN_PIX_PER_DP + CONTROL_KEYPAD_BUTTON_DISTANCE_WIDTH;
	CONTROL_KEYPAD_BUTTON_HEIGHT				= 41 * SCREEN_PIX_PER_DP + CONTROL_KEYPAD_BUTTON_DISTANCE_HEIGHT;
	CONTROL_KEYPAD_TOP_MARGIN					= 43 * SCREEN_PIX_PER_DP - CONTROL_KEYPAD_BUTTON_MARGIN_HEIGHT;
	CONTROL_KEYPAD_SIDE_MARGIN_LEFT				= 8 * SCREEN_PIX_PER_DP - CONTROL_KEYPAD_BUTTON_MARGIN_WIDTH;
	CONTROL_KEYPAD_SIDE_MARGIN_RIGHT			= 9 * SCREEN_PIX_PER_DP - CONTROL_KEYPAD_BUTTON_MARGIN_WIDTH;
	CONTROL_KEYPAD_BACK_SPACE_WIDTH				= 40 * SCREEN_PIX_PER_DP + CONTROL_KEYPAD_BUTTON_DISTANCE_WIDTH;
	CONTROL_KEYPAD_BACK_SPACE_HEIGHT			= 41 * SCREEN_PIX_PER_DP + CONTROL_KEYPAD_BUTTON_DISTANCE_HEIGHT;

	int32_t keyAdjustment[CONTROL_KEYPAD_COLUMN_COUNT * 3][2] = {
	{0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, {0,0}, // qwert...
	{2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {0,0}, // asdaf...
	{2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {2,0}, {0,0}, {0,0}, {0,0} }; // zxcv
	memcpy(keypadLoctionAdjustment, keyAdjustment, sizeof(keyAdjustment));

	backspaceLoctionAdjustment[0] = 1;
	backspaceLoctionAdjustment[1] = 0;

	//restore
	RESTORE_KEYPAD_START_X = 0;
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		RESTORE_KEYPAD_START_Y					= 594 * SCREEN_PIX_PER_DP;
	} else {
		RESTORE_KEYPAD_START_Y					= 513 * SCREEN_PIX_PER_DP;
	}
	RESTORE_MNEMONIC_TEXTBOX_WIDTH				= 72 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_TEXTBOX_HEIGHT				= 22 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_TEXTINPUT_START_X			= 24 * SCREEN_PIX_PER_DP;
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		RESTORE_MNEMONIC_TEXTINPUT_START_Y		= 387 * SCREEN_PIX_PER_DP;
	} else {
		RESTORE_MNEMONIC_TEXTINPUT_START_Y		= 367 * SCREEN_PIX_PER_DP;
	}
	RESTORE_MNEMONIC_TEXTINPUT_WIDTH			= 213 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_TEXTINPUT_HEIGHT			= 26 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_TEXTINPUT_CURSOR_MARGIN	= 1 * SCREEN_PIX_PER_DP;
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		RESTORE_MNEMONIC_TEXTINPUT_LINE_START_Y = 421 * SCREEN_PIX_PER_DP;
	} else {
		RESTORE_MNEMONIC_TEXTINPUT_LINE_START_Y = 401 * SCREEN_PIX_PER_DP;
	}
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		RESTORE_MNEMONIC_LIST_TEXT_AREA_TOP_MARGIN = 188 * SCREEN_PIX_PER_DP;
	} else {
		RESTORE_MNEMONIC_LIST_TEXT_AREA_TOP_MARGIN = 168 * SCREEN_PIX_PER_DP;
	}
	RESTORE_MNEMONIC_LIST_TEXT_AREA_SIDE_MARGIN	= 24 * SCREEN_PIX_PER_DP;

	RESTORE_MNEMONIC_LIST_TEXT_AREA_WIDTH		= 312 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_LIST_TEXT_AREA_HEIGHT		= 166 * SCREEN_PIX_PER_DP;
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		RESTORE_MNEMONIC_LIST_TOP_MARGIN		= 200 * SCREEN_PIX_PER_DP;
	} else {
		RESTORE_MNEMONIC_LIST_TOP_MARGIN		= 180 * SCREEN_PIX_PER_DP;
	}
	RESTORE_MNEMONIC_LIST_SIDE_MARGIN			= 32 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_LIST_MAX_COUNT				= 24;
	RESTORE_MNEMONIC_LIST_COLUMN_COUNT			= 4;
	RESTORE_MNEMONIC_LIST_LINE_DISTANCE			= 2 * SCREEN_PIX_PER_DP;
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		RESTORE_MNEMONIC_RECOMMEND_TOP_MARGIN	= 437 * SCREEN_PIX_PER_DP;
	} else {
		RESTORE_MNEMONIC_RECOMMEND_TOP_MARGIN	= 417 * SCREEN_PIX_PER_DP;
	}
	RESTORE_MNEMONIC_RECOMMEND_SIDE_MARGIN		= 24 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_RECOMMEND_COLUMN_COUNT		= 3;
	RESTORE_MNEMONIC_RECOMMEND_LINE_DISTANCE	= 10;
	RESTORE_MNEMONIC_RECOMMEND_WIDTH			= 101 * SCREEN_PIX_PER_DP;
	RESTORE_MNEMONIC_RECOMMEND_HEIGHT			= 30 * SCREEN_PIX_PER_DP;

	//pinpad
	PINPAD_SOFTKEY_DP							= 48;
	PINPAD_SOFTKEY_HEIGHT						= 96;

#if defined(SUPPORT_DISPLAY_HIDE_NOTCH)
	PINPAD_BOTTOM_BAR_HEIGHT					= 72;
#else
	PINPAD_BOTTOM_BAR_HEIGHT					= 0;
#endif
	PINPAD_KEY_WIDTH							= 220;
	PINPAD_KEY_HEIGHT							= 108;
	PINPAD_STAR_SIZE							= (5 * SCREEN_PIX_PER_DP);
	PINPAD_HEIGHT_DP							= 289;

	PINPAD_COL1_LEFT_HD							= (8 * SCREEN_PIX_PER_DP);
	PINPAD_COL1_RIGHT_HD						= (PINPAD_COL1_LEFT_HD + PINPAD_KEY_WIDTH);
	PINPAD_COL2_LEFT_HD							= (PINPAD_COL1_RIGHT_HD + 7 * SCREEN_PIX_PER_DP);
	PINPAD_COL2_RIGHT_HD						= (PINPAD_COL2_LEFT_HD + PINPAD_KEY_WIDTH);
	PINPAD_COL3_LEFT_HD							= (PINPAD_COL2_RIGHT_HD + 7 * SCREEN_PIX_PER_DP);
	PINPAD_COL3_RIGHT_HD						= (PINPAD_COL3_LEFT_HD + PINPAD_KEY_WIDTH);

	PINPAD_LINE1_TOP_HD							= (SCREEN_HEIGHT - PINPAD_SOFTKEY_HEIGHT - (PINPAD_HEIGHT_DP - 43) * SCREEN_PIX_PER_DP);
	PINPAD_LINE1_BOTTOM_HD						= (PINPAD_LINE1_TOP_HD + PINPAD_KEY_HEIGHT);
	PINPAD_LINE2_TOP_HD							= (PINPAD_LINE1_BOTTOM_HD + 6 * SCREEN_PIX_PER_DP);
	PINPAD_LINE2_BOTTOM_HD						= (PINPAD_LINE2_TOP_HD + PINPAD_KEY_HEIGHT);
	PINPAD_LINE3_TOP_HD							= (PINPAD_LINE2_BOTTOM_HD + 6 * SCREEN_PIX_PER_DP);
	PINPAD_LINE3_BOTTOM_HD						= (PINPAD_LINE3_TOP_HD + PINPAD_KEY_HEIGHT);
	PINPAD_LINE4_TOP_HD							= (PINPAD_LINE3_BOTTOM_HD + 6 * SCREEN_PIX_PER_DP);
	PINPAD_LINE4_BOTTOM_HD						= (PINPAD_LINE4_TOP_HD + PINPAD_KEY_HEIGHT);

	PINPAD_SOFTKEY_LEFT							= 0;
	PINPAD_SOFTKEY_TOP							= ((STANDARD_SCREEN_HEIGHT_DP - PINPAD_SOFTKEY_DP) * SCREEN_PIX_PER_DP);
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		PINPAD_SOFTKEY_BACK_LEFT				= 226 * SCREEN_PIX_PER_DP;
	} else {
		PINPAD_SOFTKEY_BACK_LEFT				= ((34 + 184) * SCREEN_PIX_PER_DP);
	}
	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		PINPAD_SOFTKEY_BACK_RIGHT				= (226 + 108) * SCREEN_PIX_PER_DP;
	} else {
		PINPAD_SOFTKEY_BACK_RIGHT				= ((34 + 184 + 108) * SCREEN_PIX_PER_DP);
	}
	PINPAD_SOFTKEY_BACK_TOP						= ((STANDARD_SCREEN_HEIGHT_DP - PINPAD_SOFTKEY_DP) * SCREEN_PIX_PER_DP);
	PINPAD_SOFTKEY_BACK_BOTTOM					= (STANDARD_SCREEN_HEIGHT_DP * SCREEN_PIX_PER_DP);
	PINPAD_SOFTKEY_BACK_BHR_LEFT				= SCREEN_WIDTH - PINPAD_SOFTKEY_BACK_RIGHT;
	PINPAD_SOFTKEY_BACK_BHR_RIGHT				= SCREEN_WIDTH - PINPAD_SOFTKEY_BACK_LEFT;
	PINPAD_SOFTKEY_BACK_BHR_TOP					= PINPAD_SOFTKEY_BACK_TOP;
	PINPAD_SOFTKEY_BACK_BHR_BOTTOM				= PINPAD_SOFTKEY_BACK_BOTTOM;

	if (getScreenType() == SCREEN_TYPE_WINNER_SUB) {
		PINPAD_STATUS_BAR_HEIGHT				= (33 * SCREEN_PIX_PER_DP);
	} else {
		PINPAD_STATUS_BAR_HEIGHT				= (38 * SCREEN_PIX_PER_DP);
	}
	PINPAD_ACTION_BAR_TOP						= (PINPAD_STATUS_BAR_HEIGHT);
	PINPAD_ACTION_BAR_HEIGHT					= (48 * SCREEN_PIX_PER_DP);
	PINPAD_ACTION_BAR_TEXT_LEFT_DP				= 56;

	PINPAD_PIN_BOX_DISTANCE						= 251; // 225 + 26 [(100(increased dp)-48(soft_key dp))/2]
	PINPAD_PIN_BOX_WIDTH						= (41 * SCREEN_PIX_PER_DP);
	PINPAD_PIN_BOX_HEIGHT						= (41 * SCREEN_PIX_PER_DP);
	PINPAD_PIN_BOX_SPACE						= (7 * SCREEN_PIX_PER_DP);
	PINPAD_PIN_BOX_IMG_WIDTH					= PINPAD_PIN_BOX_WIDTH;
	PINPAD_PIN_BOX_IMG_HEIGHT					= PINPAD_PIN_BOX_HEIGHT;
	PINPAD_PIN_BOX_TOP							= (PINPAD_PIN_BOX_DISTANCE * SCREEN_PIX_PER_DP);
	PINPAD_PIN_BOX_BOTTOM						= (PINPAD_PIN_BOX_TOP + PINPAD_PIN_BOX_HEIGHT);

	PINPAD_PIN_TEXT_TOP							= (PINPAD_PIN_BOX_BOTTOM + 15 * SCREEN_PIX_PER_DP);
	PINPAD_PIN_TEXT_BOTTOM						= (PINPAD_LINE1_TOP_HD - 1);

	PINPAD_PROMPT_DISTANCE						= 38;
	PINPAD_PROMPT_AREA_TOP						= (PINPAD_ACTION_BAR_TOP + PINPAD_ACTION_BAR_HEIGHT);
	PINPAD_PROMPT_AREA_BOTTOM					= ((PINPAD_PIN_BOX_DISTANCE - PINPAD_PROMPT_DISTANCE) * SCREEN_PIX_PER_DP);

	PINPAD_SECURE_ICON_WIDTH					= 28;
	PINPAD_SECURE_ICON_TOP						= (STANDARD_SCREEN_HEIGHT_DP - PINPAD_SOFTKEY_DP - PINPAD_HEIGHT_DP + 7);
	PINPAD_SECURE_ICON_TEXT_DISTANCE			= 2;
	PINPAD_SECURE_MODE_TEXT_TOP					= (STANDARD_SCREEN_HEIGHT_DP - PINPAD_SOFTKEY_DP - PINPAD_HEIGHT_DP + 14);

	PINPAD_ACTION_BAR_BACK_BUTTON_SIZE			= (24 * SCREEN_PIX_PER_DP);
	PINPAD_ACTION_BAR_BACK_BUTTON_LEFT			= (12 * SCREEN_PIX_PER_DP);
	PINPAD_ACTION_BAR_BACK_BUTTON_RIGHT			= (PINPAD_ACTION_BAR_BACK_BUTTON_LEFT + PINPAD_ACTION_BAR_BACK_BUTTON_SIZE);
	PINPAD_ACTION_BAR_BACK_BUTTON_TOP			= (24 * SCREEN_PIX_PER_DP + (PINPAD_ACTION_BAR_HEIGHT - PINPAD_ACTION_BAR_BACK_BUTTON_SIZE) / 2);
	PINPAD_ACTION_BAR_BACK_BUTTON_BOTTOM		= (PINPAD_ACTION_BAR_BACK_BUTTON_TOP + PINPAD_ACTION_BAR_BACK_BUTTON_SIZE);
}

