// Gadgets.c

#include <string.h>
#include <proto/dos.h>
#include <proto/intuition.h>
#include <proto/gadtools.h>
#include <proto/multiuser.h>
#include "MFileMode.h"
#include "GUI.h"

int GAD_FILEClicked(VOID)
{
	static ULONG	StartSecs = 0, StartMicros = 0;
	UBYTE			TempPath[81];
	BPTR			File;

	WriteData();

	strncpy(TempPath, Path, 80);
	AddPart(TempPath, FileNames[MainMsg.Code], 80);

	if(File = Lock(TempPath, ACCESS_READ))
	{
		Examine(File, &FileInfo);

		if((DoubleClick(StartSecs, StartMicros, MainMsg.Seconds,
				MainMsg.Micros)) && (MainMsg.Code == EntryNum) &&
				(FileInfo.fib_DirEntryType >= 0))
		{
			AddPart(Path, FileNames[MainMsg.Code], 80);

			LoadDirectory(File, &FileList);

			GT_SetGadgetAttrs(MainGadgets[GD_GAD_PATH], MainWnd, NULL,
					GTTX_Text,	Path,
					TAG_END);

			Selected = FALSE;
		}
		else
		{
			SetGadgets(&FileInfo);

			Selected = TRUE;
			Changed = FALSE;
		}

		UnLock(File);
	}
	else
		AlertUser(MainWnd, "Can't lock file", TempPath);

	StartSecs	= MainMsg.Seconds;
	StartMicros	= MainMsg.Micros;
	EntryNum	= MainMsg.Code;

	return TRUE;
}	

int GAD_VOLUMESClicked(VOID)
{
	WriteData();

	LoadVolumes(&FileList);

	Selected = FALSE;

	return TRUE;
}

int GAD_PARENTClicked(VOID)
{
	BPTR			File, Parent;

	WriteData();

	if(File = Lock(Path, ACCESS_READ))
	{
		if(Parent = ParentDir(File))
		{
			LoadDirectory(Parent, &FileList);

			if(NameFromLock(Parent, Path, 80))
			{
				GT_SetGadgetAttrs(MainGadgets[GD_GAD_PATH], MainWnd, NULL,
						GTTX_Text,	Path,
						TAG_END);
			}
			else
				AlertUser(MainWnd, "Path too large", "");

			UnLock(Parent);
		}
		else
		{
			LoadVolumes(&FileList);
		}

		UnLock(File);
	}
	else
		AlertUser(MainWnd, "Can't lock file ", Path);

	Selected = FALSE;

	return TRUE;
}

int GAD_OWNERClicked(VOID)
{
	strncpy(UserInfo->UserID, GetString(MainGadgets[GD_GAD_OWNER]),
			muUSERIDSIZE);

	if(muGetUserInfo(UserInfo, muKeyType_UserID))
		Changed = TRUE;
	else
		AlertUser(MainWnd, "No such user", UserInfo->UserID);

	return TRUE;
}

int GAD_GROUPClicked(VOID)
{
	strncpy(GroupInfo->GroupID, GetString(MainGadgets[GD_GAD_GROUP]),
			muGROUPIDSIZE);

	if(muGetGroupInfo(GroupInfo, muKeyType_GroupID))
		Changed = TRUE;
	else
		AlertUser(MainWnd, "No such group", GroupInfo->GroupID);

	return TRUE;
}

int GAD_CHECKBOXClicked(VOID)
{
	Changed = TRUE;

	return TRUE;
}

int GAD_UIDClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_SCRIPTClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_PUREClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_ARCHIVEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_USER_READClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_USER_WRITEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_USER_EXECUTEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_USER_DELETEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_GROUP_READClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_GROUP_WRITEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_GROUP_EXECUTEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_GROUP_DELETEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_OTHER_READClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_OTHER_WRITEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_OTHER_EXECUTEClicked(VOID) { return GAD_CHECKBOXClicked(); }
int GAD_OTHER_DELETEClicked(VOID) { return GAD_CHECKBOXClicked(); }
