#ifndef OverbyteIcsBatchDnsLookup1H
#define OverbyteIcsBatchDnsLookup1H

#include <System.Classes.hpp>
#include <Vcl.Controls.hpp>
#include <Vcl.StdCtrls.hpp>
#include <Vcl.ExtCtrls.hpp>
#include <Vcl.Forms.hpp>
#include "OverbyteIcsDnsQuery.hpp"
#include "OverbyteIcsTypes.hpp"
#include "OverbyteIcsWndControl.hpp"

#include <memory>

#include "OverbyteIcsDnsQuery.hpp"
#include "OverbyteIcsIniFiles.hpp"
#include "OverbyteIcsTypes.hpp"

class TBatchDnsLookupForm : public TForm
{
__published:
    TButton *StartButton;
    TMemo *DnsNamesMemo;
    TMemo *ResultMemo;
    TLabel *Label4;
    TEdit *InstancesEdit;
    TComboBox *SocketFamilyComboBox;
    TLabel *Label5;
    TMemo *IDNMemo;
    TButton *doIDNEncode;
    TMemo *DecodeMemo;
    TLabel *Label7;
    TLabel *Label8;
    TLabel *Label9;
    TLabel *Label10;
    TIcsDomainNameCache *IcsDomainNameCache1;
    TRadioGroup *DNCacheMethod;
    void __fastcall StartButtonClick(TObject *Sender);
    void __fastcall FormCreate(TObject *Sender);
    void __fastcall FormDestroy(TObject *Sender);
    void __fastcall FormShow(TObject *Sender);
    void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
    void __fastcall doIDNEncodeClick(TObject *Sender);
    void __fastcall DnsNamesMemoDblClick(TObject *Sender);
    void __fastcall IcsDomainNameCache1DNUpdateEvent(TObject *Sender, int ItemNr);
    void __fastcall DNCacheMethodClick(TObject *Sender);

private:
    int FInstances = 0;    std::unique_ptr<TIcsIniFile> FIniFile;
    bool FInitialized = false;

public:
    __fastcall TBatchDnsLookupForm(TComponent *Owner);
};

extern PACKAGE TBatchDnsLookupForm *BatchDnsLookupForm;

#endif
