// gestione files Contabilita' Analitica: FASI
#include <execp.h>
#include <relapp.h>

#include "calib01.h"
#include "calibmsk.h"
#include "ca0700a.h"

////////////////////////////////////////////////////////////////////////
//MASCHERA
////////////////////////////////////////////////////////////////////////

class TFsc_anal_msk : public TSimple_anal_msk
{
protected:
  virtual int get_logicnum() const { return LF_FASI; } 
  virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);

public:
  TFsc_anal_msk() { read("ca0700a"); }
};

bool TFsc_anal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
  const short id = o.dlg();
  if (id > F_KEY4 && id <= F_KEY4+4)
  {
    const int level = id - F_KEY4 - 1;
    return ca_test_multilevel_field(efield(id), level);
  }
  return TSimple_anal_msk::on_field_event(o, e, jolly);
}

////////////////////////////////////////////////////////////////////////
//APPLICAZIONE
////////////////////////////////////////////////////////////////////////
// applicazione per la gestione delle fasi
class TFsc_app : public TAnal_app
{  
protected:          
  virtual TSimple_anal_msk* create_mask() const { return new TFsc_anal_msk; }
  virtual bool user_create();
};

bool TFsc_app::user_create()
{
  const TMultilevel_code_info& mci = ca_multilevel_code_info(LF_FASI);
  if (mci.levels() <= 0)
    return error_box(TR("Le fasi non sono state configurate"));

  return TAnal_app::user_create();
}

int ca0700(int argc, char* argv[])
{
  TFsc_app a;
  a.run(argc, argv, TR("Fasi"));
  return 0;
}