/*
** About Window
*/

#include "include/config.h"

#include "include/mui.h"
#include <MUI/NListview_mcc.h>
#include <MUI/NFloattext_mcc.h>
#include <proto/openurl.h>

#include "include/gui.h"
#include "include/about.h"
#include "pix/biglogo.h"
#include "amster_Cat.h"

struct Library *OpenURLBase;

ULONG about_new(struct IClass *cl, Object *obj, struct opSet *msg);
void about_openurl(char *url);


MUIF about_dispatch(REG(a0) struct IClass *cl,REG(a2) Object *obj,REG(a1) Msg msg)
{
	switch(msg->MethodID) {
		case OM_NEW: return(about_new(cl,obj,(APTR)msg));
		case ABOUT_HOMEPAGE:
			about_openurl("http://www.amigart.com/amster/");
			return(NULL);
		case ABOUT_MAILLIST:
			about_openurl("http://www.onelist.com/group/amster/");
			return(NULL);
	}
	return(DoSuperMethodA(cl,obj,msg));
}


ULONG about_new(struct IClass *cl, Object *obj, struct opSet *msg)
{
	static char *pages[] = {
		(char *)_MSG_ABOUT_VERSION_TAB,
		(char *)_MSG_ABOUT_TEAM_TAB,
		(char *)_MSG_ABOUT_LICENSE_TAB,
		NULL
	};
	u_long *okbut,*hpurl,*mlurl;

	if(pages[0] == (char *)_MSG_ABOUT_VERSION_TAB)
		localize_array(pages);

	if (obj = (Object *)DoSuperNew(cl,obj,
		MUIA_Window_Title, MSG_ABOUT_TITLE,
		MUIA_Window_ID, MAKE_ID('W','H','A','T'),
		WindowContents, VGroup,
			Child, RegisterGroup(pages),
				Child, VGroup,
					Child, VSpace(0),
					Child, HGroup,
						Child, HSpace(0),
						Child, BodychunkObject,
							TextFrame,
							MUIA_InnerBottom, 0,
							MUIA_InnerLeft, 0,
							MUIA_InnerRight, 0,
							MUIA_InnerTop, 0,
							MUIA_FixWidth, BIGLOGO_WIDTH,
							MUIA_FixHeight, BIGLOGO_HEIGHT,
							MUIA_Bitmap_Width, BIGLOGO_WIDTH,
							MUIA_Bitmap_Height, BIGLOGO_HEIGHT,
							MUIA_Bodychunk_Depth, BIGLOGO_DEPTH,
							MUIA_Bodychunk_Body, (ULONG *)biglogo_body,
							MUIA_Bodychunk_Compression, BIGLOGO_COMPRESSION,
							MUIA_Bodychunk_Masking, BIGLOGO_MASKING,
							MUIA_Bitmap_SourceColors, (ULONG *)biglogo_colors,
						End,
						Child, HSpace(0),
					End,
					Child, TextObject,
						MUIA_Font, MUIV_Font_Big,
						MUIA_Text_Contents, "\33cv"AMSTER_VERSION" ("AMSTER_DATE")",
					End,
					Child, VSpace(0),
					Child, hpurl = TextObject,
						MUIA_InputMode, MUIV_InputMode_RelVerify,
						MUIA_ShowSelState, FALSE,
						MUIA_Text_PreParse, "\33u\338",
						MUIA_Text_Contents, MSG_ABOUT_HOMEPAGE,
					End,
					Child, mlurl = TextObject,
						MUIA_InputMode, MUIV_InputMode_RelVerify,
						MUIA_ShowSelState, FALSE,
						MUIA_Text_PreParse, "\33u\338",
						MUIA_Text_Contents, MSG_ABOUT_MAILLIST,
					End,
					Child, VSpace(0),
				End,
				Child, VGroup,
					Child, NListviewObject,
						MUIA_NListview_NList, NFloattextObject,
							ReadListFrame,
							MUIA_NFloattext_Text, MSG_ABOUT_TEAM,
						End,
					End,
				End,
				Child, VGroup,
					Child, NListviewObject,
						MUIA_NListview_NList, NFloattextObject,
							ReadListFrame,
							MUIA_NFloattext_Text, MSG_ABOUT_LICENSE,
						End,
					End,
				End,
			End,
			Child, HGroup,
				Child, HSpace(0),
				Child, HSpace(0),
				Child, okbut = SimpleButton(MSG_OK_GAD),
			End,
		End,
		TAG_MORE, msg->ops_AttrList))
	{
		DoMethod(hpurl,MUIM_Notify,MUIA_Pressed,FALSE,obj,1,ABOUT_HOMEPAGE);
		DoMethod(mlurl,MUIM_Notify,MUIA_Pressed,FALSE,obj,1,ABOUT_MAILLIST);

		DoMethod(okbut,MUIM_Notify,MUIA_Pressed,FALSE,obj,3,MUIM_Set,MUIA_Window_Open,FALSE);
		DoMethod(obj,MUIM_Notify,MUIA_Window_CloseRequest,TRUE,obj,3,MUIM_Set,MUIA_Window_Open,FALSE);

		return((ULONG)obj);
	}

	return(0);
}


void about_openurl(char *url)
{
	OpenURLBase = OpenLibrary("openurl.library",1);
	if(!OpenURLBase) return;
	URL_Open(url,TAG_DONE);
	CloseLibrary(OpenURLBase);
}
