campo-sirio/ca/ca0300.cpp
luca 962492b999 Patch level :10.0 324
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
gestione intelligente dei moduli CA-CM in base all'autorizzazione sulla chiave


git-svn-id: svn://10.65.10.50/trunk@18963 c028cbd2-c16b-5b4b-a496-9718f37d4682
2009-05-29 13:04:17 +00:00

184 lines
4.1 KiB
C++
Executable File

#include <automask.h>
#include <confapp.h>
#include "calib01.h"
#include "ca0.h"
#include "ca0300a.h"
// TConf_mask
class TConf_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
void config_loader(TSheet_field& sf, const char* paragrafo);
void config_setter(TSheet_field& sf, const char* paragrafo);
TConf_mask(const TFilename& f);
virtual ~TConf_mask(){};
};
bool TConf_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_LEVEL_1 :
if (e == fe_modify || e == fe_init)
{
TToken_string cod, desc;
cod = " ";
desc = TR("Nessuno");
if (o.get() == "CDC")
{
cod.add("CMS");
desc.add(TR("Commessa"));
}
else
{
cod.add("CDC");
desc.add(TR("Centro di Costo"));
}
TList_field& lev2 = (TList_field&)field(F_LEVEL_2);
const TString4 laccio = lev2.get();
lev2.replace_items(cod, desc);
lev2.set(laccio);
}
break;
case F_FATHER_FASI :
if (e == fe_close && !o.empty())
{
const TString& lev1 = get(F_LEVEL_1);
const TString& lev2 = get(F_LEVEL_2);
if (o.get() != lev1 && o.get() != lev2)
return error_box(TR("Livello superiore di fase non valido"));
}
default: break;
}
return true;
}
TConf_mask::TConf_mask(const TFilename& f) : TAutomask (f)
{
}
//-----CONFIG APPLICATION------------------------------------------------------------------------------------------//
class TConf_Analitica : public TConfig_application
{
TMask* _cm;
protected:
virtual TMask* create_mask(const TFilename& f);
virtual TMask* get_mask();
public:
virtual bool preprocess_config (TMask& mask, TConfig& config);
virtual bool postprocess_config (TMask& mask, TConfig& config);
virtual bool user_create( );
virtual bool user_destroy( );
void config_loader(TSheet_field& sf, TConfig& config, TString4 tipo);
void config_setter(TSheet_field& sf, TConfig& config, TString4 tipo);
TConf_Analitica() : TConfig_application(CONFIG_DITTA), _cm(NULL) { }
virtual ~TConf_Analitica() { }
};
TMask* TConf_Analitica::get_mask()
{
return _cm;
}
TMask* TConf_Analitica::create_mask(const TFilename& f)
{
if (_cm == NULL)
_cm = new TConf_mask(f);
return _cm;
}
void TConf_Analitica::config_loader(TSheet_field& sf, TConfig& config, TString4 tipo)
{
for (int i = 0;;i++)
{
TToken_string num_doc(config.get(tipo, NULL, i));
if (num_doc.blank())
break;
TToken_string& row = sf.row(i);
row.add(num_doc.get(0));
row.add("");
row.add(num_doc.get(1));
if (tipo == "ND")
{
row.add(num_doc.get(2));
row.add(num_doc.get(3));
}
sf.check_row(i);
}
}
void TConf_Analitica::config_setter(TSheet_field& sf, TConfig& config, TString4 tipo)
{
const int items = sf.items();
for (int i = items; ;i++)
{
TToken_string num_doc(config.get(tipo, NULL, i));
if (num_doc.blank())
break;
config.remove(tipo, i);
}
FOR_EACH_SHEET_ROW (sf, j, row)
{
TToken_string num_doc;
num_doc.add(row->get(0));
if (tipo == "ND")
{
num_doc.add(row->get(2));
num_doc.add(row->get(3));
num_doc.add(row->get(4));
}
config.set(tipo, num_doc, NULL, true, j); //setta i valori nel config
}
}
bool TConf_Analitica::preprocess_config (TMask& mask, TConfig& config)
{
config_loader(mask.sfield(F_RIGHE_NUM), config, "ND");
config_loader(mask.sfield(F_RIGHE_FDR), config, "NF");
config_loader(mask.sfield(F_RIGHE_RER), config, "RR");
return true;
}
bool TConf_Analitica::postprocess_config (TMask& mask, TConfig& config)
{
config_setter(mask.sfield(F_RIGHE_NUM), config, "ND");
config_setter(mask.sfield(F_RIGHE_FDR), config, "NF");
config_setter(mask.sfield(F_RIGHE_RER), config, "RR");
return true;
}
bool TConf_Analitica::user_create( )
{
TConfig cfg(CONFIG_DITTA, "ca");
cfg.set("EdMask", "ca0300a");
return true;
}
bool TConf_Analitica::user_destroy( )
{
if (_cm != NULL)
delete _cm;
return true;
}
int ca0300(int argc, char* argv[])
{
TConf_Analitica app;
app.run(argc, argv, TR("Parametri Contabilita' Analitica"));
return 0;
}