#include <applicat.h>
#include <execp.h>
#include <mask.h>
#include <progind.h>
#include <relation.h>
#include <urldefid.h>
#include <..\include\filetext.h>
#include <..\include\filetext.cpp>
#include <lffiles.h>

#include "at3.h"

// nomi campi maschera
//#include "at3100a.h"
          
// nomi dei campi
#include "soggetti.h"

//#include "atlib.h"

class TCarica_app : public TApplication
{
	TMask*					_msk;
	TRelation*   		_rel;
	TFile_text*			_trasfile;
		
  TLocalisamfile* _soggetti;
	
protected:
	virtual bool create();
	virtual bool destroy();
  virtual bool menu(MENU_TAG m);
	virtual TMask& get_mask() { return *_msk; }
	virtual TRelation* get_relation() const { return _rel; }
	
	int write();

public:
	TCarica_app() {}
	
};

HIDDEN inline TCarica_app& app() { return (TCarica_app&) main_app(); }

bool TCarica_app::create()
{
	TApplication::create();
	_msk = new TMask("at3100a");
	_rel = new TRelation(LF_SOGGETTI);
	_trasfile = new TFile_text("sogg.txt","sogg.ini");
  dispatch_e_menu(BAR_ITEM(1));
  
	return TRUE;
}	

bool TCarica_app::destroy()	
{
	delete _rel;
	delete _msk;
	delete _trasfile;
	return TApplication::destroy();
}

bool TCarica_app::menu(MENU_TAG m)
{ 
	TMask& msk = get_mask();
	KEY tasto;
	do
	{
  	tasto = msk.run();
  	switch (tasto)
  	{
  		case K_ENTER:	// registra
  		{
  			TCarica_app::write();
  		}  			
  		break;
  	}	
  }	
	while (tasto != K_QUIT);
  return FALSE;
}  

int TCarica_app::write()
{ 
	
  TProgind *pi;
  pi = new TProgind(10,"Caricamento dati da file di testo", FALSE, TRUE, 1);
  pi->setstatus(1);
	
	_trasfile->open("sogg.txt",'r');
	_rel->lfile().setkey(2);
	_rel->write_enable();
	TRecord_text rec;
	while (_trasfile->ok_r())	                 
	{
  	pi->addstatus(1);
  	if (_trasfile->read(rec) == NOERR)
		{  	
  		_trasfile->autosave(*_rel, rec);
		}  		
	}
  delete pi;
	
	return NOERR;	
}

int at3100(int argc, char* argv[])
{
	TCarica_app a;
	a.run(argc, argv, "Carica dati da file di testo");
	return 0;
}