diff --git a/ba/ba7100.cpp b/ba/ba7100.cpp index 35af7d4f5..4824c6682 100755 --- a/ba/ba7100.cpp +++ b/ba/ba7100.cpp @@ -483,7 +483,7 @@ protected: public: void test_delete(); - int fill_messages(); + void fill_messages(); bool save_sheet_line(int& err, int line = -1); void save_all_lines(); void auto_save_all(); @@ -497,6 +497,9 @@ public: void TMailer_mask::test_delete() { + if (_mail_semaphore != 0) + return; + _mail_semaphore = 1; TWait_cursor hourglass; xvtil_statbar_set(TR("Eliminazione messaggi...")); @@ -525,22 +528,24 @@ void TMailer_mask::test_delete() break; } deleted = mailbox.remove(id); - } else - if (mailer == "CNP") - { - TFilename file; - row->get(sender_pos, file); // Cartella di provenienza - file.add(id); - file.ext("ini"); - deleted = xvt_fsys_removefile(file) != 0; - } else - if (mailer == "MAPI") - { - TMail_message* msg = new TMail_message(""); - msg->set_id(id); - mapidel.add(msg); - deleted = true; } + else + if (mailer == "CNP") + { + TFilename file; + row->get(sender_pos, file); // Cartella di provenienza + file.add(id); + file.ext("ini"); + deleted = xvt_fsys_remove_file(file) != 0; + } + else + if (mailer == "MAPI") + { + TMail_message* msg = new TMail_message(""); + msg->set_id(id); + mapidel.add(msg); + deleted = true; + } if (deleted) { _box.destroy(nrow); @@ -567,6 +572,7 @@ void TMailer_mask::test_delete() xvtil_statbar_set(TR("Pronto")); do_events(); + _mail_semaphore = 0; } void TMailer_mask::expand_tabs(TMail_message& msg, const int tab) const @@ -658,8 +664,12 @@ void TMailer_mask::scan_dir(const TFilename& dir, TMail_messages& box) const } } -int TMailer_mask::fill_messages() -{ +void TMailer_mask::fill_messages() +{ + if (_mail_semaphore != 0) + return; + _mail_semaphore = 1; + TWait_cursor hourglass; TFilename server(get(F_SERVER)); @@ -743,7 +753,8 @@ int TMailer_mask::fill_messages() xvtil_statbar_set(TR("Pronto")); - return sf.items(); + _mail_semaphore = 0; + return; } bool TMailer_mask::file2app(const TString& file, TString& app) const @@ -1118,6 +1129,10 @@ void TMailer_mask::find_redundant_messages() void TMailer_mask::save_all_lines() { + if (_mail_semaphore != 0) + return; + _mail_semaphore = 1; + TBrowsefile_field& bf = (TBrowsefile_field&)field(F_LOG); TViswin& vv = bf.vis_win(); @@ -1189,6 +1204,7 @@ void TMailer_mask::save_all_lines() vv.goto_end(); sf.force_update(); // Fai apparire tutte le X + _mail_semaphore = 0; #ifdef DBG if (one_saved && yesno_box("Si desidera eliminare i messaggi processati?")) @@ -1230,10 +1246,7 @@ bool TMailer_mask::on_field_event(TOperable_field& o, TField_event e, long jolly if (!field(F_SERVER).empty() && !field(F_USER).empty() && !field(F_PASSWORD).empty()) - { -// auto_save_all(); // Un po' troppo precipitoso: non permette di intervenire all'accensione fill_messages(); - } } else if (e == se_query_add) {