// AmyShutDown MUI code
// Copyright (©) 1997, Infinity Labs Development Organization
// All Rights Reserved.
// Version 1.00
// Author: Manolis S. Pappas

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

/* Libraries */
#include <libraries/mui.h>
#include <libraries/gadtools.h> /* for Barlabel in MenuItem */
#include <exec/memory.h>
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/imageclass.h>

/* Prototypes */
#include <proto/muimaster.h>
#include <clib/exec_protos.h>
#include <clib/alib_protos.h>

#include "ShutDownGUI.h"

// data for the quit image 

UWORD quitPaletteRGB4[8] =
{
	0x0999,0x0000,0x0FFF,0x046A,0x0777,0x0AAA,0x0A97,0x0FA9
};

ULONG quitPaletteRGB32[26] =
{
	0x00080000,	/* Record Header */
	0x96666666,0x96666666,0x96666666,
	0x00000000,0x00000000,0x00000000,
	0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,
	0x3DDDDDDD,0x65555555,0xA2222222,
	0x79999999,0x79999999,0x79999999,
	0xAEEEEEEE,0xAEEEEEEE,0xAEEEEEEE,
	0xAAAAAAAA,0x92222222,0x7DDDDDDD,
	0xFFFFFFFF,0xAAAAAAAA,0x96666666,
	0x00000000	/* Terminator */
};

UWORD __chip quitData[102] =
{
	/* Plane 0 */
	0x0000,0x0100,0x7E5E,0x0100,0x79FF,0xC100,0x2642,0xC100,
	0x4CA2,0xE100,0x289E,0xF100,0x58F5,0xD900,0x182B,0x4D00,
	0x4C2C,0xAD00,0x2C3D,0x5D00,0x462E,0xBD00,0x0336,0x7900,
	0x01FC,0xF100,0x00FF,0xE100,0x401F,0x8100,0xFFFF,0xFF00,
	0x0000,0x0000,
	/* Plane 1 */
	0xFFFF,0xFE00,0x801E,0x0000,0x8040,0x8000,0x817C,0x0000,
	0x8762,0x2000,0x8742,0x1000,0x8F1C,0x8800,0x97D9,0x2400,
	0x8BC8,0x5400,0x83C4,0xA400,0x81D2,0x4C00,0x82D2,0x9800,
	0x8105,0x3000,0x80E0,0xE000,0x801F,0x8000,0x0000,0x0000,
	0x0000,0x0000,
	/* Plane 2 */
	0x0000,0x0100,0x7FA1,0x0000,0x7E00,0x4000,0x2883,0x2400,
	0x542B,0x1000,0x3007,0x4800,0x6886,0x6400,0x200C,0xD200,
	0x5013,0xA200,0x3423,0x5200,0x4809,0xA200,0x0419,0x4600,
	0x0202,0x0E00,0x0100,0x1E00,0x4000,0x7E00,0x8000,0x0000,
	0x0000,0x0000
};

struct Image quitImg =
{
	0, 0,		/* LeftEdge, TopEdge */
	26, 17, 3,	/* Width, Height, Depth */
	quitData,	/* ImageData */
	0x0007, 0x0000,	/* PlanePick, PlaneOnOff */
	NULL		/* NextImage */
};

static char *GetMBString(APTR ref)
{
        char *aux;

        aux = GetShutDown_SystemString(ref);
        if (aux[1] == '\0') return(&aux[2]);
        else                return(aux);
}

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

        APTR    grpMain, grpSelect, imageQuestion, grpOptions, labSelect, grpAction;
        APTR    Space_0;

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

        Object->radOptionsContent[0] = GetMBString(MSG_radOptions0);
        Object->radOptionsContent[1] = GetMBString(MSG_radOptions1);
        Object->radOptionsContent[2] = NULL;

        imageQuestion = ImageObject,
                MUIA_Image_OldImage,&quitImg,
                MUIA_Frame, MUIV_Frame_ImageButton,
                MUIA_FixHeight, 64,
                MUIA_FixWidth, 40,
        End;

        labSelect = Label(GetMBString(MSG_labSelect));

        Object->radOptions = RadioObject,
                MUIA_Background, MUII_SelectedBack,
                MUIA_Frame, MUIV_Frame_String,
                MUIA_ControlChar, GetShutDown_SystemString(MSG_radOptions)[0],
                MUIA_Radio_Entries, Object->radOptionsContent,
        End;

        grpOptions = GroupObject,
                MUIA_Background, MUII_RequesterBack,
                MUIA_Frame, MUIV_Frame_Prop,
                Child, labSelect,
                Child, Object->radOptions,
        End;

        grpSelect = GroupObject,
                MUIA_Frame, MUIV_Frame_Group,
                MUIA_Group_Horiz, TRUE,
                Child, imageQuestion,
                Child, grpOptions,
        End;

        Object->butOk = SimpleButton(GetMBString(MSG_butOk));

        Space_0 = HVSpace;

        Object->butCancel = SimpleButton(GetMBString(MSG_butCancel));

        grpAction = GroupObject,
                MUIA_Group_Horiz, TRUE,
                Child, Object->butOk,
                Child, Space_0,
                Child, Object->butCancel,
        End;

        grpMain = GroupObject,
                Child, grpSelect,
                Child, grpAction,
        End;

        Object->winChoose = WindowObject,
                MUIA_Window_Title, GetMBString(MSG_winChoose),
                MUIA_Window_ID, MAKE_ID('0', 'W', 'I', 'N'),
                MUIA_Window_CloseGadget, FALSE,
                MUIA_Window_DepthGadget, FALSE,
                MUIA_Window_DragBar, FALSE,
                MUIA_Window_SizeGadget, FALSE,
                MUIA_Window_NoMenus, TRUE,
                MUIA_Window_ScreenTitle,"AmyShutDown "__AMIGADATE__" © 1997 Infinity Labs Development Organization",
                WindowContents, grpMain,
        End;

        Object->App = ApplicationObject,
                MUIA_Application_Author, "Manolis S. Pappas",
                MUIA_Application_Base, "AmyShutDown",
                MUIA_Application_Title, "ShutDown System?",
                MUIA_Application_Version, "$VER: ShutDown 1.00 "__AMIGADATE__,
                MUIA_Application_UseCommodities,FALSE,
                MUIA_Application_UseRexx,FALSE,
                SubWindow, Object->winChoose,
        End;


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

        DoMethod(Object->butOk,
                MUIM_Notify, MUIA_Pressed, FALSE,
                Object->App,
                2,
                MUIM_Application_ReturnID, OK
                );

        DoMethod(Object->butCancel,
                MUIM_Notify, MUIA_Pressed, FALSE,
                Object->winChoose,
                3,
                MUIM_Set, MUIA_Window_Open, FALSE
                );

        DoMethod(Object->butCancel,
                MUIM_Notify, MUIA_Pressed, FALSE,
                Object->App,
                2,
                MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit
                );

        DoMethod(Object->winChoose,
                MUIM_Window_SetCycleChain, Object->radOptions,
                Object->butOk,
                Object->butCancel,
                0
                );

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


        return(Object);
}

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