diff --git a/include/applicat.cpp b/include/applicat.cpp index 9a0a6d83e..299065edc 100755 --- a/include/applicat.cpp +++ b/include/applicat.cpp @@ -27,7 +27,6 @@ #define BITTEST(w,p) (((w) & (0x0001 << (p))) != 0) - /////////////////////////////////////////////////////////// // Metodi di accesso globali all'applicazione corrente /////////////////////////////////////////////////////////// @@ -60,11 +59,34 @@ bool xvt_running() HIDDEN char* prassi_spa() { TString firm(80); - ignore_xvt_errors(TRUE); - char* p = xvt_res_get_str(STR_FIRMNAME, firm.get_buffer(), firm.size()); - ignore_xvt_errors(FALSE); + char* p = NULL; + + TConfig ini("install.ini", "Main"); + firm = ini.get("Producer"); + + if (firm.not_empty()) + { + p = (char*)decode(firm); + for (const char* c = p; *c; c++) + { + if (*c > '\0' && *c < ' ') + { + p = NULL; + break; + } + } + } + + if (p == NULL) + { + ignore_xvt_errors(TRUE); + p = xvt_res_get_str(STR_FIRMNAME, firm.get_buffer(), firm.size()); + ignore_xvt_errors(FALSE); + } + if (p == NULL) p = "PR.A.S.S.I. S.p.A."; + return p; } @@ -365,7 +387,7 @@ void TApplication::stop_run() c.set(hname, encode(remaining_time.string())); } else - message_box("Questo e' un programma dimostrativo.\n Oggi ti rimangono %s minuti di utilizzo.", remaining_time.string(3, 0)); + message_box("Questo e' un programma dimostrativo.\n Oggi rimangono %s minuti di utilizzo.", remaining_time.string(3, 0)); } #endif terminate(); @@ -560,15 +582,12 @@ void TApplication::run( __argc = argc; __argv = (const char**)argv; -/* int addbar = 0; */ if (argc > 1 && argv[1][0] == '-') { _name = cmd2name(argv[0], argv[1]); -// addbar = atoi(argv[1]+1); } else { -// addbar = 0; _name = cmd2name(argv[0]); } @@ -580,9 +599,14 @@ void TApplication::run( const int sn = get_serial_number(firm_change_enabled() ? _name : "ba0100"); if (sn < 0) { - error_box("Perhaps you forgot to connect the dongle"); + error_box("Probabilmente non e' stata inserita la chiave di protezione"); return; } + if (!test_assistance_year()) + { + error_box("Probabilmente e' scaduto il contratto di assistenza"); + return; + } set_perms(); @@ -603,14 +627,38 @@ void TApplication::run( xvt_app_create(argc, argv, 0L, task_eh, &cfg); } +bool TApplication::get_version_info(int& year, int& release, int& tag, int& patch) +{ + const char* const VERSIONANDPATCH = "Don't cry for me Argentina.1998.01.00.000.1999"; + TToken_string vep(VERSIONANDPATCH, '.'); + year = vep.get_int(1); + release = vep.get_int(); + tag = vep.get_int(); + patch = vep.get_int(); + int checksum = vep.get_int(); + + bool valid = year >= 1997 && release > 0 && tag >= 0 && patch >= 0 && + checksum == (year + release + tag + patch); + return valid; +} // About box: risposta alla opzione Informazioni del menu File void TApplication::about() const { -#include const TFilename n(__argv[0]); - message_box("Versione %s\nProgramma %s\nLibreria del %s\nN.ro di serie %d-%s", - VERSION, (const char*)n.name(), __DATE__, SerNo, INTERNAL_VERSION); + + int year, release, tag, patch; + if (get_version_info(year, release, tag, patch)) + { + message_box("Versione %d.%02d\nProgramma %s\nN.ro di serie %d-%02d.%03d", + year, release, (const char*)n.name(), SerNo, tag, patch); + } + else + { +#include + message_box("Versione %s\nProgramma %s\nLibreria del %s\nN.ro di serie %d-%s", + VERSION, (const char*)n.name(), __DATE__, SerNo, INTERNAL_VERSION); + } } // Risposta alla selezione Stampa del menu File @@ -792,7 +840,7 @@ bool TApplication::config() const char* fname = fref->name(); if (fname != NULL) { - TString& oldvl = cnf.get(fname); + const TString& oldvl = cnf.get(fname); if (!oldvl.empty()) f.set(oldvl); } diff --git a/include/applicat.h b/include/applicat.h index 3788fbd26..eb857a2b6 100755 --- a/include/applicat.h +++ b/include/applicat.h @@ -123,7 +123,7 @@ public: // @cmember Abilita la verifica del modulo cui appartiene il programma virtual bool check_autorization() const {return TRUE;} - + // @cmember Forza la chiusura dell'applicazione void stop_run(); @@ -162,6 +162,9 @@ public: // Legge il parametro /uUTENTE e lo toglie dalla lista static void check_parameters(int& argc, char *argv[]); + // @cmember Ritorna i numeri della versione del programma + static bool get_version_info(int& year, int& release, int& tag, int& patch); + // @cmember Controlla se il modulo

ha l'autorizzazione all'esecuzione bool has_module(int module, int checktype = CHK_ALL) const; // @cmember Setta la ditta corrente (Ritorna se ce l'ha fatta)