#include <exec/types.h>
#include <workbench/workbench.h>
#include <workbench/startup.h>
#include <exec/libraries.h>

#include <clib/icon_protos.h>
#include <clib/exec_protos.h>
#include <clib/wb_protos.h>
void do_appicon(struct MsgPort *myport);
extern struct Library *SysBase;
extern struct Library *IconBase;
struct Library *WorkBenchBase;

struct DiskObject *dobj=NULL;
struct AppIcon *appicon=NULL;
struct Commands {
	UBYTE	AcLvl[100],
		SerDevUnit;
	char	SerDev[40],
		NEW_UserPW[15];
	long	OpeningBaud;
	BYTE	TaskPri;
	char	ConfName[9][60],
		ConfLoc[9][60],
		BBSName[41],
		BBSLoc[41],
		SysopName[41];
	UBYTE	PSAcLvl[6],
		PSRType[6],
		PSRatio[6];
	long	PSDBytes[6],
		PSTime[6];
	char	PSCnfAc[6][10],
		MInit[101],
		MReset[31],
		MRing[31],
		MAnswer[31],
		MC300[31],
		MC1200[31],
		MC2400[31],
		MC4800[31],
		MC9600[31],
		MC19200[31];
	short	NumConf;
	char	SysPass[31],
		RemotePass[31];
	USHORT	BaudTimes[10];
	char	Pad[18];
	};
extern struct Commands *Cmds[];
extern WORD ZIM[3];
void do_appicon(struct MsgPort *myport)
{
   char temp[100];
   static int i=0;
   static int j=0;
  sprintf(temp,"%sStorage/Icons/Iconified",Cmds[0]->BBSLoc);
    
   if(!i)
   {
      sprintf(temp,"%sStorage/Icons/Iconified",Cmds[0]->BBSLoc);
      WorkBenchBase=OpenLibrary("workbench.library",0L);
      if(!(dobj=GetDiskObject(temp))) { dobj=GetDefDiskObject(WBDISK); j=1; }
      dobj->do_Type=NULL; dobj->do_CurrentX=ZIM[0];
                          dobj->do_CurrentY=ZIM[1];
      dobj->do_Gadget.Flags=GFLG_GADGIMAGE;
      appicon=AddAppIconA(0L,0L,"",myport,NULL,dobj,NULL);
     
      i=1;
    }
    else
    {
      i=0;
      RemoveAppIcon(appicon);
      FreeDiskObject(dobj);
      CloseLibrary(WorkBenchBase);
    }
}