#ifndef MAKE_ID
#define MAKE_ID(a,b,c,d) ((ULONG) (a)<<24 | (ULONG) (b)<<16 | (ULONG) (c)<<8 | (ULONG) (d))
#endif

#ifdef _DCC
#define __inline
#endif

#include "Mail_GUI.h"
#include "Mail_GUIExtern.h"


struct ObjApp * CreateApp(void)
{
	struct ObjApp * Object;

	APTR	Main_Layout_Group, Buttons;
	static const struct Hook Delete_MailHook = { { NULL,NULL },(VOID *)Delete_Mail,NULL,NULL };
	static const struct Hook AboutHook = { { NULL,NULL },(VOID *)About,NULL,NULL };


	if (!(Object = AllocVec(sizeof(struct ObjApp), MEMF_PUBLIC|MEMF_CLEAR)))
		return(NULL);

	Object->ID_ConfList = ListObject,
	   MUIA_List_ConstructHook,MUIV_List_ConstructHook_String,
		MUIA_List_DestructHook,MUIV_List_DestructHook_String,
		MUIA_Frame, MUIV_Frame_InputList,
	End;

	Object->ID_ConfList = ListviewObject,
		MUIA_HelpNode, "ID_ConfList",
		MUIA_Listview_DoubleClick, TRUE,
		MUIA_Listview_Input, TRUE,
		
		MUIA_Listview_List, Object->ID_ConfList,
	End;

	Object->ID_DeleteButton = SimpleButton("Delete Mail");

	Object->ID_InformationButton = SimpleButton("A_bout");

	Buttons = GroupObject,
		MUIA_HelpNode, "Buttons",
		MUIA_Group_Horiz, TRUE,
		Child, Object->ID_DeleteButton,
		Child, Object->ID_InformationButton,
	End;

	Object->ID_ProgressGauge = GaugeObject,
		GaugeFrame,
		MUIA_ShowMe, FALSE,
		MUIA_HelpNode, "ID_ProgressGauge",
		MUIA_FixHeight, 10,
		MUIA_Gauge_Horiz, TRUE,
		MUIA_Gauge_Max, 100,
	End;

	Object->ID_ScaleBar = ScaleObject,
		MUIA_ShowMe, FALSE,
		MUIA_Scale_Horiz, TRUE,
	End;

	Main_Layout_Group = GroupObject,
		Child, Object->ID_ConfList,
		Child, Buttons,
		Child, Object->ID_ProgressGauge,
		Child, Object->ID_ScaleBar,
	End;

	Object->Main_Window = WindowObject,
		MUIA_Window_Title, "Mail Delete By Cray-1 For The Edge of Chaos!",
		MUIA_Window_ID, MAKE_ID('0', 'W', 'I', 'N'),
		WindowContents, Main_Layout_Group,
	End;

	Object->App = ApplicationObject,
		MUIA_Application_Author, "Cray-1",
		MUIA_Application_Base, "CRAY",
		MUIA_Application_Title, "Mail_Delete",
		MUIA_Application_Version, "$VER:  01.01 (04.07.95)",
		MUIA_Application_Copyright, "Mr Cray 1",
		MUIA_Application_Description, "To Delete Read Mail",
		SubWindow, Object->Main_Window,
	End;


	if (!Object->App)
	{
		FreeVec(Object);
		return(NULL);
	}

	DoMethod(Object->Main_Window,
		MUIM_Notify, MUIA_Window_CloseRequest, TRUE,
		Object->App,
		2,
		MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
		);

	DoMethod(Object->ID_DeleteButton,
		MUIM_Notify, MUIA_Pressed, TRUE,
		Object->App,
		2,
		MUIM_CallHook, &Delete_MailHook
		);

	DoMethod(Object->ID_InformationButton,
		MUIM_Notify, MUIA_Pressed, TRUE,
		Object->App,
		2,
		MUIM_CallHook, &AboutHook
		);

	DoMethod(Object->Main_Window,
		MUIM_Window_SetCycleChain, Object->ID_ConfList,
		Object->ID_DeleteButton,
		Object->ID_InformationButton,
		0
		);

	set(Object->Main_Window,
		MUIA_Window_Open, TRUE
		);


	return(Object);
}

void DisposeApp(struct ObjApp * Object)
{
	MUI_DisposeObject(Object->App);
	FreeVec(Object);
}
