#ifndef SDK_RESOURCES_H
#define SDK_RESOURCES_H

#include <typedefs.h>

typedef UINT32	RESOURCE_ID;    // ID ресурса



#ifdef __cplusplus
extern "C" {
#endif


/* ID ресурса формируется типом ресурса в качестве старшего байта и номером ресурса текущего типа
	Например, 0x01000496 = "Системная ошибка"
	Идентификаторы для строк и картинок берутся, соответственно, из ленгпака и DRM */


#define RES_TYPE_STRING			0x01    // Текст
#define RES_TYPE_BITMAP			0x02    // Монохромная картинка, непонятно какая структура
#define RES_TYPE_ACTION			0x06    // Действие
#define RES_TYPE_LIST_DESCR		0x07    // Список, меню в списке
#define RES_TYPE_FIELD			0x0d    // Editable field in list
#define RES_TYPE_ENUM			0x10	// перечисление возможных значений
#define RES_TYPE_GRAPHICS		0x12    // Графика (GIF)



// Создать ресурс
UINT32 DRM_CreateResource( RESOURCE_ID *	res_id,
							UINT32			type,	//RES_TYPE_*
							const void *	data,
							size_t			size );

// Получить содержимое ресурса
UINT32 DRM_GetResource( RESOURCE_ID	res_id,
						void *		buf,
						size_t		size );

// Получить размер ресурса
UINT32 DRM_GetResourceLength( RESOURCE_ID res_id,  size_t * size );

// Изменить ресурс
UINT32 DRM_SetResource( RESOURCE_ID		res_id,
						const void *	data,
						size_t			size );

// Уничтожить ресурс
UINT32 DRM_ClearResource( RESOURCE_ID res_id );

#ifdef __cplusplus
} /* extern "C" */
#endif


/* Структура для описания ресурса для Action-а */
typedef struct
{
	RESOURCE_ID			softkey_label;		// Надпись на софт-кнопке
	RESOURCE_ID			list_label;			// Надпись в списке действий
	INT8				softkey_priority;	// Приоритет расположения на софткнопках, отрицательый - 
											// на левый софт, положительный - на правый
	INT8				list_priority;		// Приоритет расположения в списке действий, два пункта
											// с наивысшим приоритетом располагаются на софткнопках, и дальше смотрится softkey_priority
	BOOL				isExit;				// ?? Явлется ли командой выхода из приложения
	BOOL				sendDlgDone;		// Посылать ли дополнительно ивент EV_DIALOG_DONE
} RES_ACTION_LIST_ITEM_T;

typedef struct
{
	RESOURCE_ID			l_title;			// заголовок в списке
	RESOURCE_ID			m_title;			// заголовок в меню
	UINT32				unk1;
	UINT32				unk2;
	RESOURCE_ID			unk3[2];
	BOOL				unk4;
	UINT32				unk5;
	RESOURCE_ID			img;				// картинка. Не проверял
	BOOL				unk6;
} RES_LIST_DESCR_T;




// FIELD_DESCR_T::type
#define EDITED_ENTRY_DATA_PTR_WCHAR		3
#define EDITED_ENTRY_DATA_METER			4
/*	0x12 - ввод текста
 *	0x09 - Вкл/Выкл
 *	0x02 - COMBO, res_type = 0x09	// Выкл + свой текст
 *	0x16 - Только вывод инфы. Посредине экрана.
 */


typedef struct
{
	UINT16				type;
	RESOURCE_ID			label;		// имя "опции"
	BOOL				readonly;
	BOOL				show;
	BOOL				unk5;
	UINT32				maxlen;
	RESOURCE_ID			resource;	// res_type = 0x10
	UINT32				unk8;		// 0xB
} FIELD_DESCR_T;



#endif // SDK_RESOURCES_H