#include #include #include #include #include #include #include #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; }