/*
**	PhonePanel.c
**
**	The phonebook and support routines
**
**	Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
**		All Rights Reserved
*/

#include "termGlobal.h"

enum	{	GAD_NAMELIST,		GAD_EDIT,
		GAD_NAME,		GAD_COMMENT,		GAD_PHONENUMBER,
		GAD_NEWENTRY,		GAD_DIALLIST,		GAD_LOADLIST,		GAD_COPYCONFIG,
		GAD_CLONEENTRY,		GAD_CLEARLIST,		GAD_SORTLIST,		GAD_PASSWORD,
		GAD_REMOVEENTRY,	GAD_USEIT,		GAD_SAVELIST,		GAD_PRINT };

enum	{	EDIT_SERIAL,		EDIT_MODEM,		EDIT_SCREEN,		EDIT_TERMINAL,
		EDIT_EMULATION,		EDIT_CLIPBOARD,		EDIT_CAPTURE,		EDIT_COMMANDS,
		EDIT_MISC,		EDIT_PATHS,		EDIT_TRANSFER,		EDIT_TRANSLATION,
		EDIT_KEYMACROS,		EDIT_CURSORKEYS,
		EDIT_FASTMACROS,	EDIT_PASSWORD,		EDIT_RATES };

STATIC struct List	EditList;
STATIC struct Node	EditNode[17];

STATIC STRPTR EditName[18];

STATIC struct Gadget *
CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList)
{
	struct Gadget		*Gadget;
	struct NewGadget	 NewGadget;
	UWORD			 Counter = 0;
	WORD			 Lines = 20;

	LocalizeString(EditName,MSG_PHONEPANEL_SERIAL_TXT,MSG_PHONEPANEL_RATES_TXT);

	memset(&NewGadget,0,sizeof(struct NewGadget));

	SZ_SizeSetup(Screen,&UserFont,TRUE);

	if(Gadget = CreateContext(GadgetList))
	{
		WORD i,Max,Len,Width,ButtonWidth,MaxWidth,LeftEdge,EditWidth,ListWidth;

		NewList(&EditList);

		for(i = 0 ; i < 17 ; i++)
		{
			EditNode[i] . ln_Name = EditName[i];

			AddTail(&EditList,&EditNode[i]);
		}

		SZ_ResetMaxWidth();

		for(i = MSG_PHONEPANEL_PRINT_GAD ; i <= MSG_PHONEPANEL_SET_PASSWORT_GAD ; i++)
			SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(i),0,NULL);

		ButtonWidth = SZ_ResetMaxWidth();

		MaxWidth = 4 * ButtonWidth + 3 * INTERWIDTH;

		Max = SZ_TextWidth(LocaleString(MSG_PHONEPANEL_PHONE_NUMBER_GAD));

		if((Len = SZ_TextWidth(LocaleString(MSG_PHONEPANEL_BBS_NAME_GAD))) > Max)
			Max = Len;

		if((Len = SZ_TextWidth(LocaleString(MSG_PHONEPANEL_COMMENT_GAD))) > Max)
			Max = Len;

		SZ_AddLeftOffset(Max + INTERWIDTH);

		LeftEdge = SZ_GetLeftEdge();

		ListWidth = SZ_Width(LISTVIEW_KIND,NULL,35,NULL);

		Width = 0;

		for(i = 0 ; i < 17 ; i++)
		{
			if((Len = strlen(EditName[i])) > Width)
				Width = Len;
		}

		EditWidth = SZ_Width(LISTVIEW_KIND,NULL,Width,NULL);

		if(MaxWidth > ListWidth + InterWidth + EditWidth)
		{
			LONG Remainder = ListWidth + InterWidth + EditWidth;

			Width = (MaxWidth - Remainder) / 2;

			ListWidth += Width;
			EditWidth += MaxWidth - (Remainder + Width);
		}

		FOREVER
		{
			NewGadget . ng_Flags		= PLACETEXT_ABOVE|NG_HIGHLABEL;
			NewGadget . ng_GadgetText	= LocaleString(MSG_GLOBAL_NAME_LIST_GAD);
			NewGadget . ng_GadgetID		= Counter;

			GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
				SZ_Adjust,		TRUE,
				SZ_UseWidth,		ListWidth,
				SZ_Lines,		Lines,
				SZ_InterHeight,		1,
			TAG_DONE);

			if(SZ_GetWindowHeight() > Screen -> Height / 2 && Lines > 5)
			{
				if(*GadgetList)
				{
					FreeGadgets(*GadgetList);

					*GadgetList = NULL;
				}

				SZ_SizeSetup(Screen,&UserFont,TRUE);

				Counter = 0;

				Lines--;

				if(!(Gadget = CreateContext(GadgetList)))
					return(NULL);

				SZ_AddLeftOffset(Max + INTERWIDTH);
			}
			else
				break;
		}

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_SETTINGS_TXT);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_NewColumn,	TRUE,
			SZ_UseWidth,	EditWidth,
			SZ_Lines,	Lines,
			GadToolsBase -> lib_Version < 39 ? TAG_IGNORE : GA_Disabled,	TRUE,
			GTLV_Labels,	&EditList,
			SZ_InterHeight,	1,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_BBS_NAME_GAD);
		NewGadget . ng_GadgetID		= Counter;
		NewGadget . ng_Flags		= PLACETEXT_LEFT;

		GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_FullWidth,	TRUE,
			SZ_UseLeft,	LeftEdge,
			SZ_AlignBottom,	TRUE,

			GTST_MaxChars,	39,
			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_COMMENT_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,

			GTST_MaxChars,	39,
			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_PHONE_NUMBER_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,

			GTST_MaxChars,	59,
			GA_Disabled,	TRUE,
		TAG_DONE);


		SZ_SetWidth(ButtonWidth);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_NEW_ENTRY_GAD);
		NewGadget . ng_GadgetID		= Counter;
		NewGadget . ng_Flags		= PLACETEXT_IN;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_AlignBottom,	TRUE,
			SZ_GroupCount,	4,
			SZ_UseLeft,	LeftEdge,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_DIAL_LIST_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_LOAD_LIST_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	(Online && ChosenEntry),
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_COPY_CONFIG_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);


		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_CLONE_ENTRY_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_AlignBottom,	TRUE,
			SZ_GroupCount,	4,
			SZ_UseLeft,	LeftEdge,

			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_CLEAR_LIST_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_SORT_LIST_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_SET_PASSWORT_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);


		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_REMOVE_ENTRY_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_AlignBottom,	TRUE,
			SZ_GroupCount,	4,
			SZ_UseLeft,	LeftEdge,

			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_USE_ENTRY_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_SAVE_LIST_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);

		NewGadget . ng_GadgetText	= LocaleString(MSG_PHONEPANEL_PRINT_GAD);
		NewGadget . ng_GadgetID		= Counter;

		GadgetArray[Counter] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
			SZ_Adjust,	TRUE,
			SZ_AutoWidth,	TRUE,
			SZ_GroupNext,	TRUE,

			GA_Disabled,	TRUE,
		TAG_DONE);
	}

	return(Gadget);
}

BYTE
PhonePanel()
{
	STATIC WORD		 OffsetX = -1,OffsetY = -1;

	struct Window		*PanelWindow;
	struct Gadget		*GadgetList = NULL;
	struct Gadget		*GadgetArray[GAD_PRINT + 1];

	ULONG			 Sec1,Mic1,Sec2,Mic2;
	LONG			 HitItem = -1,Count = -1;
	BYTE			 DialTheList = FALSE;
	struct PhoneNode	*TempNode;
	struct List		*PhoneList = NULL;

	if(CreateAllGadgets(GadgetArray,&GadgetList))
	{
		if(PanelWindow = OpenWindowTags(NULL,
			WA_Left,	(Screen -> Width	- SZ_GetWindowWidth())	/ 2,
			WA_Top,		(Screen -> Height	- SZ_GetWindowHeight())	/ 2,
			WA_Width,	SZ_GetWindowWidth(),
			WA_Height,	SZ_GetWindowHeight(),

			WA_Activate,	TRUE,
			WA_DragBar,	TRUE,
			WA_DepthGadget,	TRUE,
			WA_RMBTrap,	TRUE,
			WA_DepthGadget,	TRUE,
			WA_CloseGadget,	TRUE,
			WA_CustomScreen,Screen,

			WA_IDCMP,	IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | STRINGIDCMP | BUTTONIDCMP | LISTVIEWIDCMP,

			WA_Title,	LocaleString(MSG_PHONEPANEL_PHONEBOOK_TXT),
		TAG_DONE))
		{
			struct IntuiMessage	*Massage;
			ULONG			 Class,Code;
			struct Gadget		*Gadget;
			BYTE			 Terminated = FALSE;

			UBYTE			 DummyBuffer[256],*DummyChar;

			LONG			 Selected = ~0,i;

			struct FileRequester	*FileRequest;

			PushWindow(PanelWindow);

			AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
			RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
			GT_RefreshWindow(PanelWindow,NULL);

			if(Phonebook && NumPhoneEntries)
			{
				if(PhoneList = CreatePhoneList())
				{
					GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
						GTLV_Labels,PhoneList,
					TAG_DONE);

					if(PhoneList -> lh_Head -> ln_Succ)
					{
						GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
							GA_Disabled,	FALSE,
						TAG_DONE);

						GT_SetGadgetAttrs(GadgetArray[GAD_PRINT],PanelWindow,NULL,
							GA_Disabled,	FALSE,
						TAG_DONE);

						GT_SetGadgetAttrs(GadgetArray[GAD_COPYCONFIG],PanelWindow,NULL,
							GA_Disabled,	FALSE,
						TAG_DONE);

						GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
							GA_Disabled,	FALSE,
						TAG_DONE);

						if(PhoneList -> lh_Head -> ln_Succ -> ln_Succ)
						{
							GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
								GA_Disabled,	FALSE,
							TAG_DONE);
						}
					}
				}
			}

			ActiveGadget = NULL;

			FreeDialList();

			for(i = 0 ; i < NumPhoneEntries ; i++)
			{
				if(Phonebook[i] -> Count > Count)
					Count = Phonebook[i] -> Count;
			}

			Count++;

			if(Count)
			{
				if(!Online)
				{
					GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
						GA_Disabled,	FALSE,
					TAG_DONE);
				}

				GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
					GA_Disabled,	FALSE,
				TAG_DONE);
			}

			while(!Terminated)
			{
				WaitPort(PanelWindow -> UserPort);

				while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
				{
					Class	= Massage -> Class;
					Code	= Massage -> Code;
					Gadget	= (struct Gadget *)Massage -> IAddress;

					GT_ReplyIMsg(Massage);

					if(Class == IDCMP_VANILLAKEY)
					{
						switch(Code)
						{
							case ' ':	if(Selected != -1)
									{
										HitItem = -1;

										GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
											GTLV_Labels,	~0,
										TAG_DONE);

										if(Phonebook[Selected] -> Count == -1)
										{
											if(!Count)
											{
												if(!Online)
												{
													GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
														GA_Disabled,	FALSE,
													TAG_DONE);
												}

												GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
													GA_Disabled,	FALSE,
												TAG_DONE);
											}

											Phonebook[Selected] -> Count = Count++;

											SPrintf(Phonebook[Selected] -> Node -> LocalName,"%3ld - %s",Count,Phonebook[Selected] -> Header -> Name);
										}
										else
										{
											RemoveDialEntry(Selected);

											if(!(--Count))
											{
												GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);
											}
										}

										GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
											GTLV_Labels,	PhoneList,
										TAG_DONE);
									}

									break;

							default:        KeySelect(GadgetArray,GAD_PRINT,Code,PanelWindow,&Gadget,&Class,&Code);
									break;
						}
                                        }

					if(Class == IDCMP_GADGETDOWN)
					{
						if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
							ActiveGadget = Gadget;
					}

					if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
						ActivateGadget(ActiveGadget,PanelWindow,NULL);

					if(Class == IDCMP_CLOSEWINDOW)
					{
						FreeDialList();

						Terminated = TRUE;
					}

					if(Class == IDCMP_GADGETUP)
					{
						switch(Gadget -> GadgetID)
						{
							case GAD_NAMELIST:

									if(HitItem != Code)
									{
										HitItem = Code;

										CurrentTime(&Sec1,&Mic1);

										GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
											GTST_String,	Phonebook[Code] -> Header -> Name,
											GA_Disabled,	FALSE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_COMMENT],PanelWindow,NULL,
											GTST_String,	Phonebook[Code] -> Header -> Comment,
											GA_Disabled,	FALSE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
											GTST_String,	Phonebook[Code] -> Header -> Number,
											GA_Disabled,	FALSE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
											GA_Disabled,	FALSE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
											GA_Disabled,	(Phonebook[Code] == ChosenEntry && Online),
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
											GA_Disabled,	FALSE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
											GadToolsBase -> lib_Version < 39 ? TAG_IGNORE : GA_Disabled,	FALSE,
										TAG_DONE);

										Selected = Code;
									}
									else
									{
										CurrentTime(&Sec2,&Mic2);

										if(DoubleClick(Sec1,Mic1,Sec2,Mic2))
										{
											HitItem = -1;

											GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
												GTLV_Labels,	~0,
											TAG_DONE);

											if(Phonebook[Selected] -> Count == -1)
											{
												if(!Count)
												{
													if(!Online)
													{
														GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
															GA_Disabled,	FALSE,
														TAG_DONE);
													}

													GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
														GA_Disabled,	FALSE,
													TAG_DONE);
												}

												Phonebook[Selected] -> Count = Count++;

												SPrintf(Phonebook[Selected] -> Node -> LocalName,"%3ld - %s",Count,Phonebook[Selected] -> Header -> Name);
											}
											else
											{
												RemoveDialEntry(Selected);

												if(!(--Count))
												{
													GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);
												}
											}

											GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
												GTLV_Labels,	PhoneList,
											TAG_DONE);
										}

										Sec1 = Sec2;
										Mic1 = Mic2;
									}

									break;

							case GAD_CLEARLIST:

									GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
										GTLV_Labels,	~0,
									TAG_DONE);

									Count = 0;

									for(i = 0 ; i < NumPhoneEntries ; i++)
									{
										SPrintf(Phonebook[i] -> Node -> LocalName,"      %s",Phonebook[i] -> Header -> Name);

										Phonebook[i] -> Count = -1;
									}

									GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
										GTLV_Labels,	PhoneList,
									TAG_DONE);

									GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
										GA_Disabled,	TRUE,
									TAG_DONE);

									GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
										GA_Disabled,	TRUE,
									TAG_DONE);

									break;

							case GAD_PRINT:	BlockWindow(PanelWindow);

									PrintPanel(PanelWindow,PhoneList,Count);

									ReleaseWindow(PanelWindow);

									break;

							case GAD_USEIT:

									if(Selected != ~0)
									{
										CopyMem(&Config,&PrivateConfig,sizeof(struct Configuration));

										CopyMem(Phonebook[Selected] -> Config,&Config,sizeof(struct Configuration));

										strcpy(Password,Phonebook[Selected] -> Header -> Password);
										strcpy(UserName,Phonebook[Selected] -> Header -> UserName);

										ConfigSetup();

										Terminated = TRUE;

										ConfigChanged = FALSE;
									}

									break;

							case GAD_NEWENTRY:

									GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
										GTLV_Labels,	~0,
									TAG_DONE);

									if(PhoneList)
									{
										DeletePhoneList(PhoneList);

										PhoneList = NULL;
									}

									if(NewPhoneEntry())
									{
										if(PhoneList = CreatePhoneList())
										{
											Selected = NumPhoneEntries - 1;

											GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
												GTLV_Labels,	PhoneList,
												GTLV_Selected,	Selected,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
												GTST_String,	Phonebook[Selected] -> Header -> Name,
												GA_Disabled,	FALSE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_COMMENT],PanelWindow,NULL,
												GTST_String,	Phonebook[Selected] -> Header -> Comment,
												GA_Disabled,	FALSE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
												GTST_String,	Phonebook[Selected] -> Header -> Number,
												GA_Disabled,	FALSE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
												GA_Disabled,	FALSE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
												GA_Disabled,	FALSE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
												GA_Disabled,	FALSE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
												GadToolsBase -> lib_Version < 39 ? TAG_IGNORE : GA_Disabled,	FALSE,
											TAG_DONE);

											if(NumPhoneEntries == 1)
											{
												GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
													GA_Disabled,	FALSE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_PRINT],PanelWindow,NULL,
													GA_Disabled,	FALSE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_COPYCONFIG],PanelWindow,NULL,
													GA_Disabled,	FALSE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
													GA_Disabled,	FALSE,
												TAG_DONE);
											}

											if(NumPhoneEntries > 1)
											{
												GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
													GA_Disabled,	FALSE,
												TAG_DONE);
											}

											ActivateGadget(GadgetArray[GAD_NAME],PanelWindow,NULL);

											ActiveGadget = GadgetArray[GAD_NAME];

											PhonebookChanged = TRUE;
										}
										else
											goto ClearList;
									}
									else
										goto ClearList;

									break;

							case GAD_CLONEENTRY:

									if(Selected != ~0)
									{
										GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
											GTLV_Labels,	~0,
										TAG_DONE);

										if(PhoneList)
										{
											DeletePhoneList(PhoneList);

											PhoneList = NULL;
										}

										if(NewPhoneEntry())
										{
											if(PhoneList = CreatePhoneList())
											{
												LONG Tmp = Selected;

												Selected = NumPhoneEntries - 1;

												CopyMem(Phonebook[Tmp] -> Header,Phonebook[Selected] -> Header,sizeof(struct PhoneHeader));

												SPrintf(Phonebook[Selected] -> Node -> LocalName,"      %s",Phonebook[Selected] -> Header -> Name);

												GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
													GTLV_Labels,	PhoneList,
													GTLV_Selected,	Selected,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
													GTST_String,	Phonebook[Selected] -> Header -> Name,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_COMMENT],PanelWindow,NULL,
													GTST_String,	Phonebook[Selected] -> Header -> Comment,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
													GTST_String,	Phonebook[Selected] -> Header -> Number,
												TAG_DONE);

												if(NumPhoneEntries > 1)
												{
													GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
														GA_Disabled,	FALSE,
													TAG_DONE);
												}

												PhonebookChanged = TRUE;
											}
											else
												goto ClearList;
										}
										else
											goto ClearList;
									}

									break;

							case GAD_REMOVEENTRY:

									if(Selected != ~0)
									{
										if(Phonebook[Selected] == ChosenEntry)
											MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT));
										else
										{
											PhonebookChanged = TRUE;

											GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
												GTLV_Labels,~0,
											TAG_DONE);

											if(PhoneList)
											{
												DeletePhoneList(PhoneList);

												PhoneList = NULL;
											}

											if(Phonebook[Selected] -> Count != -1)
											{
												RemoveDialEntry(Selected);

												if(!(--Count))
												{
													GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);
												}
											}

											RemPhoneEntry(Selected);

											if(NumPhoneEntries > 0)
											{
												if(PhoneList = CreatePhoneList())
												{
													if(Selected == NumPhoneEntries)
														Selected--;

													GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
														GTLV_Labels,	PhoneList,
														GTLV_Selected,	Selected,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
														GTST_String,	Phonebook[Selected] -> Header -> Name,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_COMMENT],PanelWindow,NULL,
														GTST_String,	Phonebook[Selected] -> Header -> Comment,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
														GTST_String,	Phonebook[Selected] -> Header -> Number,
													TAG_DONE);
												}
												else
													goto ClearList;

												if(NumPhoneEntries == 1)
												{
													GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);
												}
											}
											else
											{
ClearList:											GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
													GTLV_Labels,	&EmptyList,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
													GTST_String,	"",
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_COMMENT],PanelWindow,NULL,
													GTST_String,	"",
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
													GTST_String,	"",
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_PRINT],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_COPYCONFIG],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
													GA_Disabled,	TRUE,
												TAG_DONE);

												GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
													GadToolsBase -> lib_Version < 39 ? TAG_IGNORE : GA_Disabled,	TRUE,
												TAG_DONE);

												ActiveGadget = NULL;

												Selected	= ~0;
												HitItem		= -1;
											}
										}
									}

									break;

							case GAD_NAME:

									if(Selected != ~0)
									{
										strcpy(Phonebook[Selected] -> Header -> Name,SZ_GetString(GadgetArray[GAD_NAME]));

										GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
											GTLV_Labels,~0,
										TAG_DONE);

										if(PhoneList)
											DeletePhoneList(PhoneList);

										if(PhoneList = CreatePhoneList())
										{
											GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
												GTLV_Labels,	PhoneList,
												GTLV_Selected,	Selected,
											TAG_DONE);
										}

										PhonebookChanged = TRUE;
									}

									ActivateGadget(ActiveGadget = GadgetArray[GAD_COMMENT],PanelWindow,NULL);

									break;

							case GAD_COMMENT:

									if(Selected != ~0)
									{
										strcpy(Phonebook[Selected] -> Header -> Comment,SZ_GetString(GadgetArray[GAD_COMMENT]));

										PhonebookChanged = TRUE;
									}

									ActivateGadget(ActiveGadget = GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL);

									break;

							case GAD_PHONENUMBER:

									if(Selected != ~0)
									{
										strcpy(Phonebook[Selected] -> Header -> Number,SZ_GetString(GadgetArray[GAD_PHONENUMBER]));

										PhonebookChanged = TRUE;
									}

									break;

							case GAD_LOADLIST:

									BlockWindow(PanelWindow);

									if(ChosenEntry)
										MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_LOAD_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT));
									else
									{
										strcpy(DummyBuffer,LastPhone);

										DummyChar = PathPart(DummyBuffer);

										*DummyChar = 0;

										if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_LOAD_PHONEBOOK_TXT),DummyBuffer,FilePart(LastPhone),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_LOAD_TXT)))
										{
											if(PhoneList)
												DeletePhoneList(PhoneList);

											if(!LoadPhonebook(DummyBuffer))
												MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_COULD_NOT_LOAD_PHONEBOOK_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
											else
											{
												strcpy(LastPhone,DummyBuffer);

												PhonebookChanged = FALSE;
											}

											if(PhoneList = CreatePhoneList())
											{
												GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
													GTLV_Labels,	PhoneList,
												TAG_DONE);

												FreeDialList();
											}

											Count = 0;

											GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
												GTST_String,	"",
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_COMMENT],PanelWindow,NULL,
												GTST_String,	"",
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
												GTST_String,	"",
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
												GA_Disabled,	TRUE,
											TAG_DONE);

											GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
												GadToolsBase -> lib_Version < 39 ? TAG_IGNORE : GA_Disabled,	TRUE,
											TAG_DONE);

											ActiveGadget = NULL;

											if(PhoneList)
											{
												if(!PhoneList -> lh_Head -> ln_Succ)
												{
													GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_PRINT],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_COPYCONFIG],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
														GA_Disabled,	TRUE,
													TAG_DONE);
												}
												else
												{
													GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
														GA_Disabled,	FALSE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_PRINT],PanelWindow,NULL,
														GA_Disabled,	FALSE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_COPYCONFIG],PanelWindow,NULL,
														GA_Disabled,	FALSE,
													TAG_DONE);

													GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
														GA_Disabled,	FALSE,
													TAG_DONE);

													if(PhoneList -> lh_Head -> ln_Succ -> ln_Succ)
													{
														GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
															GA_Disabled,	FALSE,
														TAG_DONE);
													}
													else
													{
														GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
															GA_Disabled,	TRUE,
														TAG_DONE);
													}
												}
											}

											Selected	= ~0;
											HitItem		= -1;

											FreeAslRequest(FileRequest);
										}
									}

									ReleaseWindow(PanelWindow);

									break;

							case GAD_SORTLIST:

									if(NumPhoneEntries > 1)
									{
										PhonebookChanged = TRUE;

										BlockWindow(PanelWindow);

										GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
											GTLV_Labels,	~0,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
											GTST_String,	"",
											GA_Disabled,	TRUE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_COMMENT],PanelWindow,NULL,
											GTST_String,	"",
											GA_Disabled,	TRUE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
											GTST_String,	"",
											GA_Disabled,	TRUE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
											GA_Disabled,	TRUE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
											GA_Disabled,	TRUE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
											GA_Disabled,	TRUE,
										TAG_DONE);

										GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
											GadToolsBase -> lib_Version < 39 ? TAG_IGNORE : GA_Disabled,	TRUE,
										TAG_DONE);

										ActiveGadget = NULL;

										if(PhoneList)
											DeletePhoneList(PhoneList);

										SortPhoneEntries();

										if(PhoneList = CreatePhoneList())
										{
											GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
												GTLV_Labels,	PhoneList,
												GTLV_Selected,	~0,
											TAG_DONE);
										}

										Selected	= ~0;
										HitItem		= -1;

										ReleaseWindow(PanelWindow);
									}

									break;

							case GAD_SAVELIST:

									if(NumPhoneEntries)
									{
										strcpy(DummyBuffer,LastPhone);

										DummyChar = PathPart(DummyBuffer);

										*DummyChar = 0;

										BlockWindow(PanelWindow);

										if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SAVE_PHONEBOOK_TXT),DummyBuffer,FilePart(LastPhone),DummyBuffer,"#?.prefs",TRUE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SAVE_TXT)))
										{
											if(!SavePhonebook(DummyBuffer))
												MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_COULD_NOT_CREATE_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
											else
											{
												strcpy(LastPhone,DummyBuffer);

												PhonebookChanged = FALSE;
											}

											FreeAslRequest(FileRequest);
										}

										ReleaseWindow(PanelWindow);
									}

									break;

							case GAD_COPYCONFIG:

									BlockWindow(PanelWindow);

									if(Selected == ~0)
										PhonebookChanged |= CopyPanel(NULL);
									else
										PhonebookChanged |= CopyPanel(Phonebook[Selected] -> Config);

									ReleaseWindow(PanelWindow);
									break;

							case GAD_PASSWORD:

									BlockWindow(PanelWindow);

									{
										struct Gadget *OldActiveGadget = ActiveGadget;

										SharedBuffer[0] = 0;

										PhonePasswordUsed = FALSE;

										if(GetString(FALSE,TRUE,21,LocaleString(MSG_PHONEPANEL_PLEASE_ENTER_PASSWORD_TXT),SharedBuffer))
										{
											PhonebookChanged = TRUE;

											if(SharedBuffer[0])
											{
												SharedBuffer[20] = 0;

												Encrypt(SharedBuffer,20,PhonePassword,SharedBuffer,strlen(SharedBuffer),TRUE);

												PhonePasswordUsed = TRUE;
											}
										}

										ActiveGadget = OldActiveGadget;
									}

									ReleaseWindow(PanelWindow);
									break;

							case GAD_EDIT:

									if(Selected != ~0)
									{
										ULONG OldCRC = DoCRC(Phonebook[Selected] -> Config,sizeof(struct Configuration));

										BlockWindow(PanelWindow);

										switch(Code)
										{
											case EDIT_SERIAL:	SerialPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_MODEM:	ModemPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_SCREEN:	ScreenPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_TERMINAL:	TerminalPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_EMULATION:	EmulationPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_CLIPBOARD:	ClipPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_CAPTURE:	CapturePanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_COMMANDS:	CommandPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_MISC:		MiscPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_PATHS:	PathPanel(Phonebook[Selected] -> Config);
														break;

											case EDIT_TRANSFER:	strcpy(DummyBuffer,LastXprLibrary);

														if(SelectProtocol(Phonebook[Selected] -> Config -> FileConfig . ProtocolFileName,PanelWindow))
														{
															strcpy(Phonebook[Selected] -> Config -> FileConfig . ProtocolFileName,LastXprLibrary);

															PhonebookChanged = TRUE;
														}

														strcpy(LastXprLibrary,DummyBuffer);
														break;

											case EDIT_TRANSLATION:	strcpy(DummyBuffer,Phonebook[Selected] -> Config -> FileConfig . TranslationFileName);

														DummyChar = PathPart(DummyBuffer);

														*DummyChar = 0;

														if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_TRANSLATION_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config -> FileConfig . TranslationFileName),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
														{
															strcpy(Phonebook[Selected] -> Config -> FileConfig . TranslationFileName,DummyBuffer);

															FreeAslRequest(FileRequest);

															PhonebookChanged = TRUE;
														}

														break;

											case EDIT_KEYMACROS:	strcpy(DummyBuffer,Phonebook[Selected] -> Config -> FileConfig . MacroFileName);

														DummyChar = PathPart(DummyBuffer);

														*DummyChar = 0;

														if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_KEYBOARD_MACROS_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config -> FileConfig . MacroFileName),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
														{
															strcpy(Phonebook[Selected] -> Config -> FileConfig . MacroFileName,DummyBuffer);

															FreeAslRequest(FileRequest);

															PhonebookChanged = TRUE;
														}

														break;

											case EDIT_CURSORKEYS:	strcpy(DummyBuffer,Phonebook[Selected] -> Config -> FileConfig . CursorFileName);

														DummyChar = PathPart(DummyBuffer);

														*DummyChar = 0;

														if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_CURSOR_KEYS_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config -> FileConfig . CursorFileName),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
														{
															strcpy(Phonebook[Selected] -> Config -> FileConfig . CursorFileName,DummyBuffer);

															FreeAslRequest(FileRequest);

															PhonebookChanged = TRUE;
														}

														break;

											case EDIT_FASTMACROS:	strcpy(DummyBuffer,Phonebook[Selected] -> Config -> FileConfig . FastMacroFileName);

														DummyChar = PathPart(DummyBuffer);

														*DummyChar = 0;

														if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_FAST_MACROS_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config -> FileConfig . FastMacroFileName),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
														{
															strcpy(Phonebook[Selected] -> Config -> FileConfig . FastMacroFileName,DummyBuffer);

															FreeAslRequest(FileRequest);

															PhonebookChanged = TRUE;
														}

														break;

											case EDIT_PASSWORD:	PhonebookChanged |= PasswordUserPanel(Phonebook[Selected]);

														break;

											case EDIT_RATES:	if(Phonebook[Selected] == ChosenEntry)
															MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_EDIT_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
														else
														{
															GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
																GTLV_Labels,	~0,
															TAG_DONE);

															PhonebookChanged |= RatePanel(PhoneList,Phonebook[Selected]);

															GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
																GTLV_Labels,	PhoneList,
																GTLV_Selected,	Selected,
															TAG_DONE);
														}

														break;
										}

										PhonebookChanged |= (OldCRC != DoCRC(Phonebook[Selected] -> Config,sizeof(struct Configuration)));

										ActiveGadget = GadgetArray[GAD_NAME];

										ReleaseWindow(PanelWindow);
									}

									break;

							case GAD_DIALLIST:

									if(Count > 0)
									{
										DialTheList	= TRUE;
										Terminated	= TRUE;
									}

									break;

							default:	break;
						}
					}
				}
			}

			RemoveGList(PanelWindow,GadgetList,(UWORD)-1);

			PopWindow();

			OffsetX = PanelWindow -> LeftEdge;
			OffsetY = PanelWindow -> TopEdge;

			CloseWindow(PanelWindow);
		}
	}

	FreeGadgets(GadgetList);

	FreeDialList();

	if(PhoneList)
	{
		if(Count > 0)
		{
			TempNode = (struct PhoneNode *)PhoneList -> lh_Head;

			while(TempNode -> VanillaNode . ln_Succ)
			{
				if(TempNode -> Entry -> Count != -1)
					SortToList(TempNode);

				TempNode = (struct PhoneNode *)TempNode -> VanillaNode . ln_Succ;
			}

			if(!DialList)
				DialTheList = FALSE;
		}

		DeletePhoneList(PhoneList);
	}

	return(DialTheList);
}
