Patch level : 10.0

Files correlati     : ba0.exe
Ricompilazione Demo : [ ]
Commento            :
Migliorato tempo di attesa tra il rilascio del dongle locale ed il lancio di una applicazione da menu


git-svn-id: svn://10.65.10.50/branches/R_10_00@21621 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2011-02-10 16:20:04 +00:00
parent 550dfdeed4
commit aeccb0f86d
6 changed files with 38 additions and 42 deletions

View File

@ -88,15 +88,15 @@ long TExternal_app::run(
if (!async && utente) if (!async && utente)
{ {
if (dongle().local()) // Rilascio la chiave il prima possibile
dongle().logout();
close_all = _path.starts_with("ba1 -0") && prefix_valid(); close_all = _path.starts_with("ba1 -0") && prefix_valid();
if (close_all) //se lancia la gestione archivi forza la chiusura dei files e pure dei tracciati! if (close_all) //se lancia la gestione archivi forza la chiusura dei files e pure dei tracciati!
prefix().set(""); prefix().set("");
else else
safely_close_closeable_isamfiles(); safely_close_closeable_isamfiles();
if (dongle().local())
dongle().logout();
// Programma normale (non menu) che chiama "collega" // Programma normale (non menu) che chiama "collega"
if (iconize && is_outlook_menu_chain()) if (iconize && is_outlook_menu_chain())
{ {

View File

@ -289,7 +289,7 @@ HIDDEN int find_tabapp(TConfig& cfg, void* jolly)
if (info._relapp.not_empty()) if (info._relapp.not_empty())
return 2; return 2;
} }
if (cfg.exist(info._var3)) if (info._var3.full() && cfg.exist(info._var3))
{ {
info._relapp = cfg.get(info._var3); info._relapp = cfg.get(info._var3);
if (info._relapp.not_empty()) if (info._relapp.not_empty())
@ -299,14 +299,14 @@ HIDDEN int find_tabapp(TConfig& cfg, void* jolly)
return 0; return 0;
} }
bool get_tabapp(const char * tabname, TString& app) bool get_tabapp(const char* tabname, TString& app)
{ {
TConfig ini(CONFIG_GENERAL); TConfig ini(CONFIG_GENERAL, "Main");
TCallbackTableinfo fi; TCallbackTableinfo fi;
TTable t(tabname); TTable t(tabname);
fi._var1.format("Edit_%s", t.name()); fi._var1.format("Edit_%s", t.name());
fi._var2.format("Edit_%d", t.num()); fi._var2.format("Edit_%d", t.num());
fi._var2.format("Edit_%d", t.num() == LF_TABCOM ? LF_TAB : LF_TABCOM); fi._var3.format("Edit_%d", t.num() == LF_TABCOM ? LF_TAB : LF_TABCOM);
fi._module = t.module(); fi._module = t.module();
ini.for_each_paragraph(find_tabapp, &fi); ini.for_each_paragraph(find_tabapp, &fi);
@ -317,11 +317,11 @@ bool get_tabapp(const char * tabname, TString& app)
if (app.empty()) if (app.empty())
{ {
app = "ba3 -0"; app = "ba3 -0";
if (fi._module.compare("ba", 2, TRUE) != 0) if (!fi._module.starts_with("ba")) // Compatibility mode :-(
{ {
TConfig c(CONFIG_STUDIO, fi._module); const TString& tp = ini_get_string(CONFIG_STUDIO, fi._module, "TabPrg");
if (c.exist("TabPrg")) if (tp.full())
app = c.get("TabPrg"); app = tp;
} }
} }
app << ' ' << tabname; app << ' ' << tabname;
@ -3963,9 +3963,9 @@ bool TRectype::edit(int logicnum, const char* alternate_key_fields, const char*
r.settab(_tab); r.settab(_tab);
TString app = hint; TString app = hint;
if (app.empty()) if (app.blank())
r.get_relapp(app); r.get_relapp(app);
if (app.not_empty()) if (app.full())
{ {
const RecDes& recd = r.rec_des(); // Descrizione del record della testata const RecDes& recd = r.rec_des(); // Descrizione del record della testata
const KeyDes& kd = recd.Ky[0]; // Elenco dei campi della chiave 1 const KeyDes& kd = recd.Ky[0]; // Elenco dei campi della chiave 1
@ -3981,11 +3981,11 @@ bool TRectype::edit(int logicnum, const char* alternate_key_fields, const char*
if (key_fields.empty_items()) if (key_fields.empty_items())
key_fields = key_labels; key_fields = key_labels;
TFilename ininame; ininame.temp(); TFilename ininame; ininame.temp("lnk", "ini");
{ {
TConfig ini(ininame, "Transaction"); TConfig ini(ininame, "Transaction");
ini.set("Action", "LINK"); ini.set("Action", "LINK");
TString16 p; p << logicnum; TString8 p; p << logicnum;
ini.set_paragraph(p); ini.set_paragraph(p);
FOR_EACH_TOKEN(key_labels, tok) FOR_EACH_TOKEN(key_labels, tok)

View File

@ -168,7 +168,7 @@ public:
// @cmember Ritorna l'identificatore della classe maschera // @cmember Ritorna l'identificatore della classe maschera
virtual word class_id() const; virtual word class_id() const;
// @cmember Ritorna TRUE se la maschera deriva dalla classe <p c> // @cmember Ritorna true se la maschera deriva dalla classe <p c>
virtual bool is_kind_of(word c) const; virtual bool is_kind_of(word c) const;
// @cmember Ritorna il numero della pagina corrente // @cmember Ritorna il numero della pagina corrente
@ -240,13 +240,13 @@ public:
void set_focus_field(short id); void set_focus_field(short id);
virtual void notify_focus_field(short id); virtual void notify_focus_field(short id);
// @cmember Controlla i campi di una maschera (TRUE se tutti validi) // @cmember Controlla i campi di una maschera (true se tutti validi)
bool check_fields(); bool check_fields();
// @cmember Esegue il check e i messaggi sul campo <p fld_id> della maschera // @cmember Esegue il check e i messaggi sul campo <p fld_id> della maschera
virtual void check_field( short fld_id ); virtual void check_field( short fld_id );
// @cmember Forza la chiusura della maschera // @cmember Forza la chiusura della maschera
virtual bool stop_run(KEY key); virtual bool stop_run(KEY key);
// @cmember Controlla se la maschera puo' essere chiusa (TRUE se puo' esserlo) // @cmember Controlla se la maschera puo' essere chiusa (true se puo' esserlo)
virtual bool can_be_closed() const; virtual bool can_be_closed() const;
// @cmember Permette di aprire una maschera // @cmember Permette di aprire una maschera
@ -254,7 +254,7 @@ public:
// @cmember Permette di chiudere una maschera // @cmember Permette di chiudere una maschera
virtual void close(); virtual void close();
// @cmember Permette di attivare/disattivare tutta la pagina // @cmember Permette di attivare/disattivare tutta la pagina
virtual void activate(bool on = TRUE); virtual void activate(bool on = true);
virtual void set_focus(); virtual void set_focus();
// @cmember Converte un identificatore di campo nella sua posizione // @cmember Converte un identificatore di campo nella sua posizione
@ -333,7 +333,7 @@ public:
virtual void on_firm_change(); virtual void on_firm_change();
// @cmember Abilita/disabilita un campo // @cmember Abilita/disabilita un campo
virtual void enable(short fld_id, bool on = TRUE); virtual void enable(short fld_id, bool on = true);
// @cmember Disabilita un campo (chiama <mf TMask::enable>) // @cmember Disabilita un campo (chiama <mf TMask::enable>)
void disable(short fld_id) void disable(short fld_id)
{ enable(fld_id, false); } { enable(fld_id, false); }
@ -347,24 +347,24 @@ public:
// @cmember Disabilita una pagina e tutte le successive (chiama <mf TMask::enable_page>) // @cmember Disabilita una pagina e tutte le successive (chiama <mf TMask::enable_page>)
void disable_page(byte p) void disable_page(byte p)
{ enable_page(p, false); } { enable_page(p, false); }
// @cmember Controlla se una pagina e' disabilitata (TRUE se disabilitata) // @cmember Controlla se una pagina e' disabilitata (true se disabilitata)
bool page_enabled(byte p) const; bool page_enabled(byte p) const;
// @cmember Ritorna il numero di chiavi utilizzate nei campi della maschera // @cmember Ritorna il numero di chiavi utilizzate nei campi della maschera
word num_keys() const; word num_keys() const;
// @cmember Abilita/disabilita i campi di una chiave sulla maschera // @cmember Abilita/disabilita i campi di una chiave sulla maschera
void enable_key(word key, bool on = TRUE); void enable_key(word key, bool on = true);
// @cmember Disabilita i campi di una chiave sulla maschera (chiama <mf TMask::enable_key>) // @cmember Disabilita i campi di una chiave sulla maschera (chiama <mf TMask::enable_key>)
void disable_key(word key) void disable_key(word key)
{ enable_key(key, false); } { enable_key(key, false); }
// @cmember Ritorna il l'identificatore di un campo della chiave <p key> // @cmember Ritorna il l'identificatore di un campo della chiave <p key>
TEditable_field* get_key_field(word key, bool first) const; TEditable_field* get_key_field(word key, bool first) const;
// @cmember Controlla se la chiave <p key> ha un valore significativo // @cmember Controlla se la chiave <p key> ha un valore significativo
// (TRUE se il valore e' valido) // (true se il valore e' valido)
bool key_valid(word key) const; bool key_valid(word key) const;
// @cmember Permette di mostrare/nascondere un campo (chiama <mf TMask_field::show>) // @cmember Permette di mostrare/nascondere un campo (chiama <mf TMask_field::show>)
virtual void show(short fld_id = -1, bool on = TRUE); virtual void show(short fld_id = -1, bool on = true);
// @cmember Permette di nascondere un campo (chiama <mf TMask::show>) // @cmember Permette di nascondere un campo (chiama <mf TMask::show>)
void hide(short fld_id = 0) void hide(short fld_id = 0)
{ show(fld_id, false); } { show(fld_id, false); }
@ -402,7 +402,7 @@ public:
// @cmember Salva il profilo <p num> // @cmember Salva il profilo <p num>
int save_profile(int num = 0, const char* desc = NULL) const; int save_profile(int num = 0, const char* desc = NULL) const;
// @cmember Carica il profilo <p num> // @cmember Carica il profilo <p num>
int load_profile(int num = 0, bool reset = TRUE); int load_profile(int num = 0, bool reset = true);
// @cmember Elimina il profilo <p num> // @cmember Elimina il profilo <p num>
bool kill_profile(int num); bool kill_profile(int num);
@ -413,27 +413,26 @@ public:
short dirty() const; short dirty() const;
// @cmember Setta lo sheet di cui la maschera gestisce le righe // @cmember Setta lo sheet di cui la maschera gestisce le righe
void set_sheet(TSheet_field* s) void set_sheet(TSheet_field* s) { _sheet = s; }
{ _sheet = s; }
// @cmember Ritorna lo sheet che gestisce la maschera // @cmember Ritorna lo sheet che gestisce la maschera
TSheet_field* get_sheet() const TSheet_field* get_sheet() const
{ return _sheet; } { return _sheet; }
// @cmember Ritorna se la maschera e' contenuta in uno sheet (TRUE se contenuta) // @cmember Ritorna se la maschera e' contenuta in uno sheet (true se contenuta)
bool is_sheetmask() const bool is_sheetmask() const
{ return _sheet != NULL; } { return _sheet != NULL; }
// @cmember Ritorna TRUE se la maschera non ha modalita' di utilizzo (vedi <t TMaskmode>) // @cmember Ritorna true se la maschera non ha modalita' di utilizzo (vedi <t TMaskmode>)
bool no_mode() const bool no_mode() const
{ return _mode == NO_MODE; } { return _mode == NO_MODE; }
// @cmember Ritorna TRUE se la maschera e' in modalita' di richiesta (vedi <t TMaskmode>) // @cmember Ritorna true se la maschera e' in modalita' di richiesta (vedi <t TMaskmode>)
bool query_mode() const bool query_mode() const
{ return _mode == MODE_QUERY || _mode == MODE_QUERYINS; } { return _mode == MODE_QUERY || _mode == MODE_QUERYINS; }
// @cmember Ritorna TRUE se la maschera e' in modalita' di modifica (vedi <t TMaskmode>) // @cmember Ritorna true se la maschera e' in modalita' di modifica (vedi <t TMaskmode>)
bool edit_mode() const bool edit_mode() const
{ return _mode == MODE_MOD; } { return _mode == MODE_MOD; }
// @cmember Ritorna TRUE se la maschera e' in modalita' di inserimento (vedi <t TMaskmode>) // @cmember Ritorna true se la maschera e' in modalita' di inserimento (vedi <t TMaskmode>)
bool insert_mode() const bool insert_mode() const
{ return _mode == MODE_QUERYINS || _mode == MODE_INS; } { return _mode == MODE_QUERYINS || _mode == MODE_INS; }

View File

@ -1394,17 +1394,17 @@ const TFilename& TFilename::temp(
mask.ext(extension); mask.ext(extension);
const int star = mask.find('*'); const int star = mask.find('*');
CHECK(star>=0, "Invalid temp file mask");
TString_array list; TString_array list;
const int count = list_files(mask, list); const int count = list_files(mask, list);
if (count > 0) if (count > 0)
{ {
for (int i = 0; i < count; i++) FOR_EACH_ARRAY_ROW(list, i, row)
{ {
const char* name = (const char*)list.row(i) + star; const char* name = row->mid(star);
const long numero = atol(name) + 1; const long numero = atol(name) + 1;
mask.cut(star); mask = row->left(star);
mask << numero; mask << numero;
mask.ext(extension); mask.ext(extension);
if (list.find(mask) < 0) if (list.find(mask) < 0)

View File

@ -144,16 +144,13 @@ void TTable::load_module_description()
// cerca se esiste il file ??<TAB_NAME>.MSK tramite la funzione list_files(), // cerca se esiste il file ??<TAB_NAME>.MSK tramite la funzione list_files(),
// ne estrae il module dai primi 2 caratteri e la descrizione dalla intestazione // ne estrae il module dai primi 2 caratteri e la descrizione dalla intestazione
// della prima pagina. // della prima pagina.
_des_mod_loaded = TRUE; _des_mod_loaded = true;
TFilename n; TFilename n;
n << "recdesc/d" << _tabname; n << "recdesc/d" << _tabname;
n.ext("des"); n.ext("des");
n.lower(); n.lower();
if (n.exist()) if (n.exist())
{ _module = ini_get_string(n, "TabDescr", "Module");
TConfig des(n, "TabDescr");
_module = des.get("Module");
}
n = "??tb"; n = "??tb";
n << _tabname; n << _tabname;
n.ext("msk"); n.ext("msk");

View File

@ -665,7 +665,7 @@ HIDDEN bool _strcalc_val(TMask_field& f, KEY k)
HIDDEN bool _onereq_val(TMask_field& f, KEY k) HIDDEN bool _onereq_val(TMask_field& f, KEY k)
{ {
if (k != K_ENTER|| f.mask().mode() == MODE_QUERY) if (k != K_ENTER || f.mask().mode() == MODE_QUERY)
return true; return true;
const int nparms = get_val_param_count(); const int nparms = get_val_param_count();