view src/ui/atb/ATBEditor.h @ 223:740a8e8fc9d7

startup sync logic rework for the new PWON button boot scheme Previously we added logic to the MMI task to hold off PEI init until R2D is running, and then extended that condition to wait for FCHG init too. However, the dependencies of MMI upon R2D and FCHG don't start until mmiInit(), and that call is driven by Switch_ON() code, hence the wait for R2D and FCHG init can be made in that code path instead of the MMI task. Furthermore, with our new way of signaling PWON button boot to MMI, we need a new wait to ensure that the MMI task is up - previously this assurance was provided by the wait for Kp pointers to be set. Solution: revert our previous PEI init hold-off additions to MMI, add a new flag indicating MMI task init done, and put the combined wait for all needed conditions into our new PWON button boot code in power.c.
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 27 Apr 2021 06:24:52 +0000
parents 67bfe9f274f6
children
line wrap: on
line source

/*******************************************************************************

					CONDAT (UK)

********************************************************************************                                                                              

 This software product is the property of Condat (UK) Ltd and may not be
 disclosed to any third party without the express permission of the owner.                                 
                                                                              
********************************************************************************

 $Project name:	                                                      
 $Project code:	                                                           
 $Module:		
 $File:		    ATBEditor.h
 $Revision:		                                                      
                                                                              
 $Author:		Condat(UK)                                                         
 $Date:		                                                          
                                                                               
********************************************************************************
                                                                              
 Description:  Header file for ATB Editor component.

 REQUIRES: ATBCommon.h, ATBDisplay.h
                        
********************************************************************************

 $History: ATBEditor.h
       Feb 02, 2006 DR: OMAPS00061468 - x0035544.
       Description: SAT 27.22.4.22.2 SET UP IDLE MODE TEXT (Icon support) fails 
       Solution:Enum is defined to support mode of SAT info display 
       
	Jan 16, 2006 DR: OMAPS00061460 - Shashi Shekar B.S.
	Description: SAT Icon support
	Solution : Structure definition displaying title icon through editor.
  
 $End

*******************************************************************************/


#ifndef ATB_EDITOR_H
#define ATB_EDITOR_H

#ifndef DSPL_H
#include "dspl.h"
#endif

/**********************************************
 * CONSTANTS
 *
 *********************************************/

enum
{
	ED_CURSOR_NONE,			            /* No cursor, read only */
	ED_CURSOR_BAR,			           /* Vertical bar thin */
	ED_CURSOR_UNDERLINE,				/* Underline-style cursor */
	ED_CURSOR_BLOCK						/* Highlights current character */
};

enum
{
	ED_MODE_ALPHA			= 0x01,				/* Alphanumeric Multi-tap mode */
	ED_MODE_OVERWRITE		= 0x02,				/* Overwrite mode */
	ED_MODE_PREDTEXT		= 0x04,				/* Predictive text mode */
	ED_MODE_FORMATTED		= 0x08,				/* Formatted input mode for WAP */
	ED_MODE_HIDDEN			= 0x10,				/* Hidden mode - *'s appear in place */
	ED_MODE_READONLY		= 0x20,				/* Read only mode */
	ED_MODE_ALL				= 0xFFFF			/* Allows switching off of all modes */
};

/* Editor visibility */

enum
{
	ED_INVISIBLE			= 0,				/* Editor is not displayed */
	ED_VISIBLE				= 1					/* Editor is displayed */
};

/* Editor updates */

#define ED_UPDATE_DEFAULT		0				/* Update everything by default */
#define ED_UPDATE_TRIVIAL		1				/* Trivial change - no scrolling or reformatting req.*/
#define ED_UPDATE_PARTIAL		2				/* Partial change */
#define ED_UPDATE_FULL			3				/* Full update required */


/**********************************************
 * ED_RES
 *
 * Result of editor functions
 *********************************************/
 
typedef enum
{
	ED_OK,
	ED_BAD_HANDLE,
	ED_ERROR,
	ED_DONE
}
ED_RES;


/**********************************************
 * T_ED_CB
 *
 * Callback type
 *********************************************/
 
typedef int (*T_ED_CB) (ULONG, void*);


/**********************************************
 * EDITOR CONTROL CHARACTERS
 *
 *********************************************/
 
typedef enum                           
{
    ctrlNone = 0,							/* no valid edit control */
    ctrlLeft,							/* cursor left */
    ctrlRight,							/* cursor right */
    ctrlUp,								/* cursor up */
    ctrlDown,							/* cursor down */
    ctrlTop,							/* cursor to top of text */
    ctrlBottom,							/* cursor to end of text */
    ctrlBack,							/* backspace */
    ctrlDel,							/* delete */
    ctrlEnter,							/* return key */
    ctrlEscape,							/* escape key */
    ctrlMax								/* Highest control character */
} T_ED_CONTROLS;


/* This type indicates whether or not the cursor is within a fixed field */

enum
{
	ENTRY_NOT_IN_FIELD = 0,
	ENTRY_ENTERING_FIELD,
	ENTRY_IN_FIELD
};


/* Output types for ATB_edit_FindPrev() */

enum
{
	FINDPREV_NO_CHANGE,
	FINDPREV_PREV_FOUND,
	FINDPREV_FIRST_CHAR,
	FINDPREV_LAST_CHAR
};

//Sudha.V., x0035544, Feb 02, 2006 DR: OMAPS00061468
#ifdef FF_MMI_SAT_ICON
typedef enum
{
	SAT_ICON_NONE = -1,
	SAT_ICON_DISPLAY_TEXT,
	SAT_ICON_IDLEMODE_TEXT
} T_DISPLAY_TYPE;


// Shashi Shekar B.S., a0876501, 16-Jan-2006, OMAPS00061460
/* T_ATB_EDITOR_TITLE_ICON */

typedef struct
{
	UBYTE		width;
	UBYTE		height;
	char*		data;
	BOOL		isTitle;
	T_DISPLAY_TYPE display_type;
	BOOL 		selfExplanatory;

} T_ATB_EDITOR_TITLE_ICON;
#endif

/**********************************************
 * T_ED_ATTR
 *
 * Editor attributes, provided by user
 *********************************************/

typedef struct
{
    T_ATB_WIN_SIZE	win_size;				/* Editor position and size */
    ULONG			colour;					/* Foreground and background colour */
    UBYTE			font;					/* Character font */
    USHORT			cursor;					/* cursor type */
    USHORT			mode;					/* Edit Mode */
    T_ATB_TEXT		text;					/* Edit buffer */
    USHORT			size;              		/* Buffer size */
	char			*FormatString;			/* Formatting string for WAP formatted input */
	T_DS_TEXTFORMAT	startFormat;			/* Text format to be applied to the start of text */
// Shashi Shekar B.S., a0876501, 16-Jan-2006, OMAPS00061460
#ifdef FF_MMI_SAT_ICON
	T_ATB_EDITOR_TITLE_ICON		TitleIcon;
#endif
} T_ED_ATTR;

/**********************************************
 * T_ED_LINE
 *
 * Information about a line of text in the editor
 *********************************************/

typedef struct T_ED_LINE_TAG
{
	UBYTE 					height;			/* The height of the line */
	USHORT					pos;			/* The position of the start of the line in the buffer */
	T_DS_TEXTFORMAT			format;			/* The format attributes at the start of the line */
	struct T_ED_LINE_TAG	*next;			/* The succeeding line */
} T_ED_LINE;


/**********************************************
 * T_ED_CHAR
 *
 * Information about a character in the editor
 *********************************************/

typedef struct
{
	USHORT 					width;			// The width of the character
	USHORT 					height;			// The height of the character
	USHORT					pos;			// The position of the character
	T_DS_TEXTFORMAT			format;				// The format attributes of the character
	USHORT					lineHeight;			// Height of the line, so far
	USHORT					lineWidth;			// Width of the current line (in pixels)
} T_ED_CHAR;


/**********************************************
 * T_ED_CURSOR
 *
 * Information about cursor
 *********************************************/

typedef struct
{
    SHORT					x;			// Cursor X position, relative to top left corner of editor
    SHORT					y;			// Cursor Y position, relative to top left corner of editor
    SHORT					width;		// Size of cursor
    SHORT					height;		// Height of cursor
    USHORT					attr;		// Format attributes under the cursor
    USHORT					pos;         /* cursor position          */
	SHORT					line;		// The line the cursor is on (with respect to the whole text)
} T_ED_CURSOR;


/**********************************************
 * T_ED_DATA
 *
 * Main editor information
 *********************************************/
 
typedef struct                
{
    T_ED_CB					handler;            /* event handler            */
    T_ED_ATTR				*attr;               /* editor attributes        */

	/* Various flags */
	
	BOOL					initialised;		// TRUE if important values have been set up
    BOOL					display;			/* Whether editor is hidden or not. */
    UBYTE					update;				/* Which portions of the editor to update */
	UBYTE					multitap;			/* Stores status of multi-tap */
	UBYTE					textcase;			/* Case of text entry (upper, lower, numeric etc) */

	/* Word wrap information */
	
    T_ED_CURSOR				cursor;				/* Properties of cursor */
	T_ED_CHAR				thischar;			/* Properties of current character */
	T_ED_CHAR				space;				/* Properties of the last space */
	T_ED_LINE				*line;				/* Properties of lines in editor */

	BOOL					startOfLine;		/* TRUE indicates the start of a text line */
	BOOL 					endOfLine;			/* TRUE indicates end of a text line */
	BOOL					endOfText;			/* TRUE indicates no more chars in text */
	BOOL					precedingEOL;		/* Character preceding current character is an End Of Line */
	BOOL					precedingSpace;		/* Character preceding current character is a space */

	USHORT					startPos;			/* Character position, or start of current block */
	USHORT					numLines;			/* Total number of lines in the editor */
	SHORT					winStartLine;		/* The first line to be displayed in the current window */
	USHORT					linesPerScreen;		/* No of lines that fit on current screen */

	/* Display properties */

    USHORT					totalHeight;		/* Total height (in pixels) of the whole text string */
    USHORT					viewHeight;			/* The height visible in the editor */
    USHORT					viewStartPos;		/* Start position of view in pixels */

	/* WAP delimited input information */

	SHORT					formatIndex;		// Position in formatting string
    SHORT					fieldIndex;			// Position within a delimited field

    /* Hidden input information */

    T_ATB_TEXT				*hiddenText;		/* Hidden text is stored in this buffer */ 
} T_ED_DATA;


/**********************************************
 * T_ED_CASE
 *
 * The case of the current text
 *********************************************/
typedef enum
{
	ED_CASE_UPPER,						/* Upper case */
	ED_CASE_LOWER,						/* Lower case */
	ED_CASE_CAPS,						/* Capitalise starts of sentences */
	ED_CASE_NUM							/* Numbers */
} T_ED_CASE;

 
/**********************************************
 * T_ED_CASE_PREF
 *
 * Preference for case input
 *********************************************/
 
typedef enum
{
	ED_CASEPREF_NONE,					/* End of string - no case */
	ED_CASEPREF_NUM,					/* Any numeric character */
 	ED_CASEPREF_ALPHA_UC,				/* Any symbolic or alphabetic uppercase character */
	ED_CASEPREF_ALPHA_LC,				/* Any symbolic or alphabetic lowercase character */
	ED_CASEPREF_ALPHANUM,				/* Any symbolic, numeric, or alphabetic character */
	ED_CASEPREF_ALPHANUM_UC,			/* Any symbolic, numeric, or alphabetic uppercase character */
	ED_CASEPREF_ALPHANUM_LC				/* Any symbolic, numeric, or alphabetic lowercase character */
} T_ED_CASE_PREF;


/**********************************************
 * FUNCTION PROTOTYPES
 *
 *********************************************/

ED_RES			ATB_edit_Init (T_ED_DATA *editor);
T_ED_DATA*		ATB_edit_Create (T_ED_ATTR *editAttr, T_ED_CB callback);
ED_RES			ATB_edit_Destroy (T_ED_DATA *editor);
ED_RES			ATB_edit_Reset (T_ED_DATA *editor);
ED_RES			ATB_edit_Show (T_ED_DATA *editor);
ED_RES			ATB_edit_Refresh (T_ED_DATA *editor);
ED_RES			ATB_edit_Hide (T_ED_DATA *editor);
ED_RES			ATB_edit_Unhide (T_ED_DATA *editor);

ED_RES			ATB_edit_Char (T_ED_DATA *editor, USHORT character, UBYTE update);
ED_RES			ATB_edit_AsciiChar (T_ED_DATA *editor, char character, UBYTE update);
ED_RES			ATB_edit_MultiTap(T_ED_DATA *editor, USHORT character, BOOL multitap);
ED_RES			ATB_edit_AsciiMultiTap(T_ED_DATA *editor, char character, BOOL multitap);
ED_RES			ATB_edit_MoveCursor (T_ED_DATA *editor, USHORT control, UBYTE update);
ED_RES			ATB_edit_DeleteLeft (T_ED_DATA *editor, UBYTE update); /* SPR#2342 - SH */
ED_RES			ATB_edit_DeleteRight (T_ED_DATA *editor, UBYTE update); /* SPR#2342 - SH */
ED_RES			ATB_edit_ClearAll (T_ED_DATA *editor);

ED_RES			ATB_edit_HiddenInit(T_ED_DATA *editor);
ED_RES			ATB_edit_HiddenExit(T_ED_DATA *editor);
ED_RES			ATB_edit_InsertString (T_ED_DATA *editor, T_ATB_TEXT *insText);/* Insert a word at the cursor pos */
USHORT			ATB_edit_GetCursorChar(T_ED_DATA *editor, int offset);
BOOL			ATB_edit_CapitaliseWord(T_ED_DATA *editor);
USHORT 			ATB_edit_FindCapital(USHORT small_char);
T_ED_LINE		*ATB_edit_LineGet(T_ED_DATA *editor, SHORT lineNo);

void			ATB_edit_SetAttr(T_ED_DATA *editor, T_ATB_WIN_SIZE *win_size, ULONG colour, UBYTE font, USHORT mode, USHORT cursor, T_ATB_TEXT *text, USHORT size);
UBYTE			ATB_edit_Mode(T_ED_DATA *editor, USHORT mode);
void			ATB_edit_SetMode(T_ED_DATA *editor, USHORT mode);
void			ATB_edit_ResetMode(T_ED_DATA *editor, USHORT mode);
void			ATB_edit_SetStyle(T_ED_DATA *editor, USHORT style);
UBYTE			ATB_edit_GetCase(T_ED_DATA *editor);
void			ATB_edit_SetCase(T_ED_DATA *editor, UBYTE textcase);
T_ED_CASE_PREF	ATB_edit_GetCasePref(T_ED_DATA *editor);
#endif