diff --git a/src/include/config.cpp b/src/include/config.cpp index a1beb7a3a..9147dab54 100755 --- a/src/include/config.cpp +++ b/src/include/config.cpp @@ -895,6 +895,7 @@ TConfig::~TConfig() #define DECLARE_VARNAME(name, idx) const char* varname = idx >= 0 ? (const char*)(get_tmp_string() << name << '(' << idx << ')') : name #define DECLARE_FILENAME(cfg) TFilename filename; cfg2file(cfg, filename) +#define STOP_LINE "FERMATioSTREGA" const TString& ini_get_string(const char* file, const char* paragraph, const char* name, const char* defval, int idx) { @@ -916,6 +917,53 @@ const TString& ini_get_string(const char* file, const char* paragraph, const cha return tmp; } +const TString& ini_get_line_memo(const char* file, const char* para, const char* name, int idx) +{ + return ini_get_string(file, para, name, STOP_LINE, idx); +} + +void ini_del_memo(const char* file, const char* para, const char* name) +{ + for (int i = 0; i < ini_get_rows_memo(file, para, name); i++) + ini_remove(file, para, name, i); +} + +int ini_get_rows_memo(const char* file, const char* para, const char* name) +{ + int idx = 0; + for (TString row = ini_get_line_memo(file, para, name, idx); row != STOP_LINE; row = ini_get_line_memo(file, para, name, idx)) + idx++; + return idx; +} + +const TString& ini_get_memo(const char* file, const char* para, const char* name) +{ + static TString msg; msg.cut(0); + const int rows = ini_get_rows_memo(file, para, name); + for(int i=0; i < rows; i++) + { + TString row = ini_get_line_memo(file, para, name, i); + if (i > 0) + msg << '\n'; + msg << row; + } + return msg; +} + +void ini_set_memo(const char* file, const char* para, const char* name, const char* msg) +{ + // Rimuovo tutte le precedenti righe per non rischiare di lasciarmi vecchie righe indietro (le nuove righe sono meno di prima) + const int rows = ini_get_rows_memo(file, para, name); + for(int i=0; i < rows; i++) + ini_remove(file, para, name, i); + if (!TString(msg).empty()) + { + TToken_string msg_tok(msg, '\n'); + for (int i = 0; i < msg_tok.items(); i++) + ini_set_string(file, para, name, msg_tok.get(), i); + } +} + bool ini_set_string(const char* file, const char* paragraph, const char* name, const char* val, int idx) { DECLARE_VARNAME(name, idx); @@ -976,6 +1024,12 @@ bool ini_remove(int cfg, const char* para, const char* name, int idx) return ini_remove(filename, para, name, idx); } +const TString& ini_get_memo(int cfg, const char* para, const char* name) +{ + DECLARE_FILENAME(cfg); + return ini_get_memo(filename, para, name); +} + int ini_get_int(int cfg, const char* paragraph, const char* name, int defval, int idx) { DECLARE_FILENAME(cfg); @@ -994,6 +1048,18 @@ bool ini_set_bool(int cfg, const char* paragraph, const char* name, bool val, in return ini_set_string(filename, paragraph, name, val ? "1" : "0", idx); } +void ini_set_memo(int cfg, const char* para, const char* name, const char* msg) +{ + DECLARE_FILENAME(cfg); + ini_set_memo(filename, para, name, msg); +} + +void ini_del_memo(int cfg, const char* para, const char* name) +{ + DECLARE_FILENAME(cfg); + ini_del_memo(filename, para, name); +} + const TString& get_oem_info(const char* varname, const char* def) { TString& tmp = get_tmp_string(50); diff --git a/src/include/config.h b/src/include/config.h index 738e8bfbd..e2df1dd1f 100755 --- a/src/include/config.h +++ b/src/include/config.h @@ -192,6 +192,12 @@ bool ini_set_bool (const char* file, const char* para, const char* na bool ini_set_int (const char* file, const char* para, const char* name, int val, int idx = -1); bool ini_set_string(const char* file, const char* para, const char* name, const char* val, int idx = -1); bool ini_remove (const char* file, const char* para, const char* name, int idx = -1); +const TString& ini_get_memo (const char* file, const char* para, const char* name); +void ini_set_memo (const char* file, const char* paragraph, const char* name, const char* msg); +int ini_get_rows_memo(const char* file, const char* paragraph, const char* name); +const TString& ini_get_line_memo(const char* file, const char* paragraph, const char* name, int idx); +void ini_del_memo (const char* file, const char* para, const char* name); + // High level utilities bool ini_get_bool (int cfg, const char* para, const char* name, bool defval = false, int idx = -1); int ini_get_int (int cfg, const char* para, const char* name, int defval = 0, int idx = -1); @@ -200,6 +206,9 @@ bool ini_set_bool (int cfg, const char* para, const char* name, bool bool ini_set_int (int cfg, const char* para, const char* name, int val, int idx = -1); bool ini_set_string(int cfg, const char* para, const char* name, const char* val, int idx = -1); bool ini_remove (int cfg, const char* para, const char* name, int idx = -1); +const TString& ini_get_memo (int cfg, const char* para, const char* name); +void ini_set_memo (int cfg, const char* para, const char* name, const char* msg); +void ini_del_memo (int cfg, const char* para, const char* name); const TString& get_oem_info(const char* varname, const char* defval = ""); // ini_get_string(CONFIG_OEM, "OEM_?", varname, defval); bool is_aga_version(bool power_user_only = false); diff --git a/src/ve/ve0200.cpp b/src/ve/ve0200.cpp index 5d9b04f2b..fb874f93d 100755 --- a/src/ve/ve0200.cpp +++ b/src/ve/ve0200.cpp @@ -15,6 +15,8 @@ class TConf_vendite : public TConfig_application static bool check_fields(TMask_field& f, KEY k); static bool check_fields_iva(TMask_field& f, KEY k); + bool load_conai_ini(TMask& mask); + bool save_conai_ini(TMask& mask); virtual const char * extra_modules() const {return "dt";} @@ -64,13 +66,29 @@ bool TConf_vendite::check_fields_iva(TMask_field& f, KEY k) return TRUE; } +bool TConf_vendite::load_conai_ini(TMask& mask) +{ + TString msg = ini_get_memo(CONFIG_DITTA, "ve", "DESCCONAIASS"); + mask.set(F_DESCONAIASS, !msg.empty()? msg : ""); + return true; +} + +bool TConf_vendite::save_conai_ini(TMask& mask) +{ + TString msg = mask.get(F_DESCONAIASS); + ini_set_memo(CONFIG_DITTA, "ve", "DESCCONAIASS", msg); + return true; +} + bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config) { disable_menu_item(M_FILE_NEW); switch (_current) { - + case 1: + load_conai_ini(mask); + break; case 5: // solo per configurazione "e" { TToken_string ric(config.get("RICERCACR")); @@ -153,7 +171,9 @@ bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config) switch (_current) { - + case 1: + save_conai_ini(mask); + break; case 5: // solo per configurazione "e" { TToken_string ric; diff --git a/src/ve/ve0200a.uml b/src/ve/ve0200a.uml index 20216e974..bb3cf2990 100755 --- a/src/ve/ve0200a.uml +++ b/src/ve/ve0200a.uml @@ -466,11 +466,9 @@ BEGIN PROMPT 2 15 "@bMessaggio alternativo a 'CONTRIBUTO CONAI ASSOLTO'" END -STRING F_DESCONAIASS 50 +ZOOM F_DESCONAIASS 110 50 BEGIN PROMPT 2 16 "" - FIELD DESCCONAIASS - GROUP 7 END BOOLEAN F_ESPONIESENTI