aboutsummaryrefslogtreecommitdiff
path: root/SrcShared/Palm/Platform/Incs/Core/UI/Table.h
blob: 1c67ce854403b8775aea771c478959d5da8d2f4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
/******************************************************************************
 *
 * Copyright (c) 1994-1999 Palm Computing, Inc. or its subsidiaries.
 * All rights reserved.
 *
 * File: Table.h
 *
 * Description:
 *	  This file defines table structures and routines.
 *
 * History:
 *		September 1, 1994	Created by Art Lamb
 *
 *****************************************************************************/

#ifndef __TABLE_H__
#define __TABLE_H__

#include <PalmTypes.h>
#include <CoreTraps.h>

#include <Field.h>

//-------------------------------------------------------------------
// Table structures
//-------------------------------------------------------------------

#define tableDefaultColumnSpacing 	1
#define tableNoteIndicatorWidth		7
#define tableNoteIndicatorHeight		11
#define tableMaxTextItemSize 			255	// does not incude terminating null

#define tblUnusableRow					0xffff

// Display style of a table item
//
enum tableItemStyles { checkboxTableItem, 
                       customTableItem, 
                       dateTableItem, 
                       labelTableItem,
                       numericTableItem,
                       popupTriggerTableItem,
                       textTableItem,
                       textWithNoteTableItem,
                       timeTableItem,
                       narrowTextTableItem
                       };
typedef enum tableItemStyles TableItemStyleType;


typedef struct {
	TableItemStyleType	itemType;		
   FontID					fontID;		// font for drawing text
	Int16						intValue;
	Char *  					ptr;
} TableItemType;
typedef TableItemType *TableItemPtr;


// Draw item callback routine prototype, used only by customTableItem.
typedef void TableDrawItemFuncType  
		(void *tableP, Int16 row, Int16 column, RectangleType *bounds);

typedef TableDrawItemFuncType *TableDrawItemFuncPtr;


// Load data callback routine prototype
typedef Err TableLoadDataFuncType 
		(void *tableP, Int16 row, Int16 column, Boolean editable, 
		MemHandle * dataH, Int16 *dataOffset, Int16 *dataSize, FieldPtr fld);

typedef TableLoadDataFuncType *TableLoadDataFuncPtr;


// Save data callback routine prototype
typedef	Boolean TableSaveDataFuncType
		(void *tableP, Int16 row, Int16 column);

typedef TableSaveDataFuncType *TableSaveDataFuncPtr;

typedef struct {
	Coord							width;					// width in pixels
	UInt16						reserved1 		: 5;
	UInt16						masked			: 1;  // if both row + column masked, draw only grey box
	UInt16						editIndicator	: 1;
	UInt16						usable 			: 1;
	UInt16						reserved2		: 8;
	Coord							spacing;					// space after column
	TableDrawItemFuncPtr		drawCallback;
	TableLoadDataFuncPtr		loadDataCallback;
	TableSaveDataFuncPtr		saveDataCallback;

} TableColumnAttrType;


typedef struct {
	UInt16						id;
	Coord							height;					// row height in pixels
	UInt32						data;

	UInt16						reserved1		: 7;
	UInt16						usable			: 1;
	UInt16						reserved2		: 4;
	UInt16						masked			: 1;  // if both row + column masked, draw only grey box
	UInt16						invalid			: 1;	// true if redraw needed
	UInt16 						staticHeight	: 1;  // Set if height does not expands as text is entered
	UInt16						selectable		: 1;

	UInt16						reserved3;

} TableRowAttrType;


typedef struct {
	UInt16 						visible:1;			// Set if drawn, used internally
   UInt16 						editable:1;			// Set if editable
	UInt16 						editing:1;			// Set if in edit mode
	UInt16 						selected:1;			// Set if the current item is selected
	UInt16						hasScrollBar:1;	// Set if the table has a scroll bar
	UInt16						reserved:11;
} TableAttrType;


typedef struct TableType {
	UInt16						id;
   RectangleType				bounds;
   TableAttrType				attr;
	Int16							numColumns;
	Int16							numRows;
	Int16							currentRow;
	Int16							currentColumn;
	Int16							topRow;
	TableColumnAttrType *	columnAttrs;
   TableRowAttrType *    	rowAttrs;
	TableItemPtr				items;
	FieldType					currentField;
} TableType;

typedef TableType *TablePtr;


//-------------------------------------------------------------------
// Table routines
//-------------------------------------------------------------------
#ifdef REMOVE_FOR_EMULATOR
#ifdef __cplusplus
extern "C" {
#endif

extern void TblDrawTable (TableType *tableP)
							SYS_TRAP(sysTrapTblDrawTable);

extern void TblRedrawTable (TableType *tableP)
							SYS_TRAP(sysTrapTblRedrawTable);

extern void TblEraseTable (TableType *tableP)
							SYS_TRAP(sysTrapTblEraseTable);

extern Boolean TblHandleEvent (TableType *tableP, EventType *event)
							SYS_TRAP(sysTrapTblHandleEvent);

extern void TblGetItemBounds (const TableType *tableP, Int16 row, Int16 column, RectangleType *rP)
							SYS_TRAP(sysTrapTblGetItemBounds);

extern void TblSelectItem (TableType *tableP, Int16 row, Int16 column)
							SYS_TRAP(sysTrapTblSelectItem);

extern Int16 TblGetItemInt (const TableType *tableP, Int16 row, Int16 column)
							SYS_TRAP(sysTrapTblGetItemInt);

extern void TblSetItemInt (TableType *tableP, Int16 row, Int16 column, Int16 value)
							SYS_TRAP(sysTrapTblSetItemInt);

extern void TblSetItemPtr (TableType *tableP, Int16 row, Int16 column, void *value)
							SYS_TRAP(sysTrapTblSetItemPtr);

extern void TblSetItemStyle (TableType *tableP, Int16 row, Int16 column, TableItemStyleType type)
							SYS_TRAP(sysTrapTblSetItemStyle);

extern void TblUnhighlightSelection (TableType *tableP)
							SYS_TRAP(sysTrapTblUnhighlightSelection);

extern Boolean TblRowUsable  (const TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblRowUsable);

extern void TblSetRowUsable (TableType *tableP, Int16 row, Boolean usable)
							SYS_TRAP(sysTrapTblSetRowUsable);

extern Int16 TblGetLastUsableRow (const TableType *tableP)
							SYS_TRAP(sysTrapTblGetLastUsableRow);

extern void TblSetColumnUsable (TableType *tableP, Int16 column, Boolean usable)
							SYS_TRAP(sysTrapTblSetColumnUsable);

extern void TblSetRowSelectable (TableType *tableP, Int16 row, Boolean selectable)
							SYS_TRAP(sysTrapTblSetRowSelectable);

extern Boolean TblRowSelectable (const TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblRowSelectable);

extern Int16 TblGetNumberOfRows (const TableType *tableP)
							SYS_TRAP(sysTrapTblGetNumberOfRows);

extern void TblSetCustomDrawProcedure (TableType *tableP, Int16 column,
	TableDrawItemFuncPtr drawCallback)
							SYS_TRAP(sysTrapTblSetCustomDrawProcedure);

extern void TblSetLoadDataProcedure (TableType *tableP, Int16 column,
	TableLoadDataFuncPtr loadDataCallback)
							SYS_TRAP(sysTrapTblSetLoadDataProcedure);

extern void TblSetSaveDataProcedure (TableType *tableP, Int16 column,
	TableSaveDataFuncPtr saveDataCallback)
							SYS_TRAP(sysTrapTblSetSaveDataProcedure);

extern void TblGetBounds (const TableType *tableP, RectangleType *rP)
							SYS_TRAP(sysTrapTblGetBounds);

extern void TblSetBounds (TableType *tableP, const RectangleType *rP)
							SYS_TRAP(sysTrapTblSetBounds);

extern Coord TblGetRowHeight (const TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblGetRowHeight);

extern void TblSetRowHeight (TableType *tableP, Int16 row, Coord height)
							SYS_TRAP(sysTrapTblSetRowHeight);

extern Coord TblGetColumnWidth (const TableType *tableP, Int16 column)
							SYS_TRAP(sysTrapTblGetColumnWidth);

extern void TblSetColumnWidth (TableType *tableP, Int16 column, Coord width)
							SYS_TRAP(sysTrapTblSetColumnWidth);

extern Coord TblGetColumnSpacing (const TableType *tableP, Int16 column)
							SYS_TRAP(sysTrapTblGetColumnSpacing);

extern void TblSetColumnSpacing (TableType *tableP, Int16 column, Coord spacing)
							SYS_TRAP(sysTrapTblSetColumnSpacing);

extern Boolean TblFindRowID (const TableType *tableP, UInt16 id, Int16 *rowP)
							SYS_TRAP(sysTrapTblFindRowID);

extern Boolean TblFindRowData (const TableType *tableP, UInt32 data, Int16 *rowP)
							SYS_TRAP(sysTrapTblFindRowData);

extern UInt16 TblGetRowID (const TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblGetRowID);

extern void TblSetRowID (TableType *tableP, Int16 row, UInt16 id)
							SYS_TRAP(sysTrapTblSetRowID);

extern UInt32 TblGetRowData (const TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblGetRowData);

extern void TblSetRowData (TableType *tableP, Int16 row, UInt32 data)
							SYS_TRAP(sysTrapTblSetRowData);

extern Boolean TblRowInvalid (const TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblRowInvalid);

extern void TblMarkRowInvalid (TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblMarkRowInvalid);

extern void TblMarkTableInvalid (TableType *tableP)
							SYS_TRAP(sysTrapTblMarkTableInvalid);

extern Boolean TblGetSelection (const TableType *tableP, Int16 *rowP, Int16 *columnP)
							SYS_TRAP(sysTrapTblGetSelection);

extern void TblInsertRow (TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblInsertRow);
							
extern void TblRemoveRow (TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblRemoveRow);

extern void TblReleaseFocus (TableType *tableP)
							SYS_TRAP(sysTrapTblReleaseFocus);
							
extern Boolean TblEditing (const TableType *tableP)
							SYS_TRAP(sysTrapTblEditing);

extern FieldPtr TblGetCurrentField (const TableType *tableP)
							SYS_TRAP(sysTrapTblGetCurrentField);
							
extern void TblGrabFocus (TableType *tableP, Int16 row, Int16 column)
							SYS_TRAP(sysTrapTblGrabFocus);

extern void TblSetColumnEditIndicator (TableType *tableP, Int16 column, Boolean editIndicator)
							SYS_TRAP(sysTrapTblSetColumnEditIndicator);

extern void TblSetRowStaticHeight (TableType *tableP, Int16 row, Boolean staticHeight)
							SYS_TRAP(sysTrapTblSetRowStaticHeight);

extern void TblHasScrollBar (TableType *tableP, Boolean hasScrollBar)
							SYS_TRAP(sysTrapTblHasScrollBar);

extern FontID TblGetItemFont (const TableType *tableP, Int16 row, Int16 column)
							SYS_TRAP(sysTrapTblGetItemFont);

extern  void TblSetItemFont (TableType *tableP, Int16 row, Int16 column, FontID fontID)
							SYS_TRAP(sysTrapTblSetItemFont);

extern void *TblGetItemPtr (const TableType *tableP, Int16 row, Int16 column)
							SYS_TRAP(sysTrapTblGetItemPtr);

extern Boolean TblRowMasked  (const TableType *tableP, Int16 row)
							SYS_TRAP(sysTrapTblRowMasked);
							
extern void TblSetRowMasked  (TableType *tableP, Int16 row, Boolean masked)
							SYS_TRAP(sysTrapTblSetRowMasked);
							
extern void TblSetColumnMasked  (TableType *tableP, Int16 column, Boolean masked)
							SYS_TRAP(sysTrapTblSetColumnMasked);
#ifdef __cplusplus 
}
#endif
#endif

#endif //__TABLE_H__