campo-sirio/ca/ca0900.cpp
luca 04e114197f Patch level :10.0
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
mancava questo!


git-svn-id: svn://10.65.10.50/branches/R_10_00@21382 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-12-29 14:44:05 +00:00

162 lines
3.9 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <config.h>
#include <defmask.h>
#include <dongle.h>
#include <prefix.h>
#include <utility.h>
#include "ca0900a.h"
//////////////////////////////////////////////
// Maschera
//////////////////////////////////////////////
class TGestione_permessi_CA_mask : public TAutomask
{
int _pos_prog, _pos_codcms, _pos_cdc, _pos_fase;
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void mask2ini();
void ini2mask(const TString& username);
const TFilename build_path();
public:
TGestione_permessi_CA_mask();
~TGestione_permessi_CA_mask();
};
const TFilename TGestione_permessi_CA_mask::build_path()
{
//il file deve essere nascostamente nascosto in Dati\config
TFilename fileconf;
fileconf = firm2dir(-1); // Directory dati
fileconf.add("config"); // + Directory config
if (!fileconf.exist()) // Creala se necessario (in generale caso impossibilissimo!)
make_dir(fileconf);
fileconf.add("ca0900conf.ini"); //il file si chiama così per mascherarsi tra i tanti
return fileconf;
}
void TGestione_permessi_CA_mask::ini2mask(const TString& username)
{
//carica i parametri dal file ini
TFilename fileconf = build_path();
TConfig config(fileconf, username);
//filtri principali
set(F_CODCMS, config.get("Cms"));
set(F_CDC, config.get("Cdc"));
set(F_FASE, config.get("Fas"));
//filtri secondari per programma
TSheet_field& sf_righe = sfield(F_RIGHE);
for (int i = 0; config.exist("Prog", NULL, i); i++)
{
sf_righe.row(-1) = config.get("Prog", NULL, i);
}
sf_righe.force_update();
}
//salva i dati nel file ini
void TGestione_permessi_CA_mask::mask2ini()
{
const TString& username = get(F_USERNAME);
//il file deve essere nascostamente nascosto in Dati\config
TFilename fileconf = build_path();
TConfig config(fileconf, username);
config.remove_all();
//filtri principali
config.set("Cms", get(F_CODCMS));
config.set("Cdc", get(F_CDC));
config.set("Fas", get(F_FASE));
//filtri secondari per programma
TSheet_field& sf_righe = sfield(F_RIGHE);
FOR_EACH_SHEET_ROW(sf_righe, r, riga)
{
config.set("Prog", *riga, NULL, true, r);
}
}
bool TGestione_permessi_CA_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_USERNAME:
if (e == fe_modify)
{
//carica tutte le righe del .ini al caricamento dell'utente
ini2mask(o.get());
disable(F_USERNAME);
enable(DLG_SAVEREC);
enable(DLG_CANCEL);
}
break;
case DLG_SAVEREC:
if (e == fe_button && check_fields())
{
mask2ini();
return false;
}
break;
default:
break;
}
return true;
}
TGestione_permessi_CA_mask::TGestione_permessi_CA_mask() : TAutomask ("ca0900a")
{
//assegna una volta per tutte le pos delle colonne di sheet
TSheet_field& sf_righe = sfield(F_RIGHE);
_pos_prog = sf_righe.cid2index(S_PROGRAMMA);
_pos_codcms = sf_righe.cid2index(S_CODCMS);
_pos_cdc = sf_righe.cid2index(S_CDC);
_pos_fase = sf_righe.cid2index(S_FASE);
}
TGestione_permessi_CA_mask::~TGestione_permessi_CA_mask()
{
}
//////////////////////////////////////////////
// Applicazione
//////////////////////////////////////////////
class TGestione_permessi_CA : public TSkeleton_application
{
protected:
public:
virtual void main_loop();
virtual bool create();
};
void TGestione_permessi_CA::main_loop()
{
TGestione_permessi_CA_mask mask;
while (mask.run() == K_ENTER)
{
}
}
bool TGestione_permessi_CA::create()
{
const TString& utente = user();
if (utente.compare(::dongle().administrator()) != 0)
{
TString msg;
msg << "Utente " << utente << " non autorizzato all'uso di questo programma!";
return error_box(msg);
}
return TSkeleton_application::create();
}
int ca0900 (int argc, char* argv[])
{
TGestione_permessi_CA app;
app.run(argc, argv, TR("Gestione permessi CA"));
return 0;
}