From 32ebb6b8f70f126303f5a809cc06af6542f5b3ed Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 28 Dec 2015 14:14:41 +0000 Subject: [PATCH] Gestione mail git-svn-id: svn://10.65.10.50/branches/R_10_00@23169 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ba/ba0100m.uml | 69 +++++++++++++++ ba/ba0104.cpp | 15 ++++ ba/ba1200.cpp | 231 ++++++++++++++++++++----------------------------- ba/ba2800.cpp | 1 + 4 files changed, 181 insertions(+), 135 deletions(-) create mode 100644 ba/ba0100m.uml create mode 100644 ba/ba0104.cpp diff --git a/ba/ba0100m.uml b/ba/ba0100m.uml new file mode 100644 index 000000000..b42e37cee --- /dev/null +++ b/ba/ba0100m.uml @@ -0,0 +1,69 @@ +PAGE "Configurazione E-Mail utente" -1 -1 63 11 + +STRING 101 260 50 +BEGIN + PROMPT 1 0 "Server " + FIELD Server +END + +STRING 102 260 50 +BEGIN + PROMPT 1 1 "Porta " + FIELD Port +END + +TEXT DLG_NULL +BEGIN + PROMPT 11 2 "Alice: 25" +END + +TEXT DLG_NULL +BEGIN + PROMPT 25 2 "GMail: 465 -ssl -auth-plain" +END + +STRING 103 50 +BEGIN + PROMPT 1 4 "Utente " + FIELD User +END + +STRING 104 50 +BEGIN + PROMPT 1 5 "Password " + FIELD Password + FLAGS "*" +END + +STRING 105 260 50 +BEGIN + PROMPT 1 6 "Da " + FIELD From +END + +LIST 106 1 +BEGIN + PROMPT 21 7 "Tentativi di trasmissione " + ITEM "1|1" + ITEM "2|2" + ITEM "3|3" + ITEM "4|4" + ITEM "5|5" + FIELD Retry +END + +MEMO 107 60 4 +BEGIN + PROMPT 1 7 "Saluti / Firma" + FIELD Signature +END + + +ENDPAGE + +TOOLBAR "Topbar" 0 0 0 2 +#include +ENDPAGE + + +ENDMASK diff --git a/ba/ba0104.cpp b/ba/ba0104.cpp new file mode 100644 index 000000000..fbba4af49 --- /dev/null +++ b/ba/ba0104.cpp @@ -0,0 +1,15 @@ +#define WIN32_LEAN_AND_MEAN +#define STRICT +#include +#include + +int xvt_fsys_get_desktop(char* dir) +{ + int err = EINVAL; + if (dir) + { + ::SHGetFolderPathA(NULL, CSIDL_DESKTOPDIRECTORY, NULL, SHGFP_TYPE_CURRENT, dir); + err = *dir ? 0 : ENOENT; + } + return err; +} diff --git a/ba/ba1200.cpp b/ba/ba1200.cpp index dd9eb6f9e..668f841f1 100755 --- a/ba/ba1200.cpp +++ b/ba/ba1200.cpp @@ -45,11 +45,12 @@ TProfiler_mask::TProfiler_mask() : TMask(TR("Test"), 1, 60, 20) class TTest_application : public TSkeleton_application { - TProgress_monitor* _pi; + WINDOW _pi; + long _total; + clock_t _start; - clock_t start_timer() const; - - clock_t start_progind(const long items, const char* prompt); + void start_progind(long items, const char* prompt); + bool update_progind(long item); clock_t stop_progind(); protected: @@ -69,19 +70,19 @@ public: TTest_application() : _pi(NULL) { } }; -clock_t TTest_application::start_timer() const +void TTest_application::start_progind(long items, const char* msg) { + CHECK(_pi == NULL_WIN, "Double progress indicator"); + _pi = xvt_dm_progress_create(NULL_WIN, TR("Performance profiler"), _total = items, TRUE); + xvt_dm_progress_set_text(_pi, msg); clock_t t = clock(); while (clock() == t); - t = clock(); - return t; + _start = clock(); } -clock_t TTest_application::start_progind(const long items, const char* prompt) +bool TTest_application::update_progind(long item) { - CHECK(_pi == NULL, "Double progress indicator"); - _pi = new TProgress_monitor(items, prompt, true); - return start_timer(); + return xvt_dm_progress_set_status(_pi, item, _total) != 0; } clock_t TTest_application::stop_progind() @@ -89,10 +90,10 @@ clock_t TTest_application::stop_progind() const clock_t t = clock(); if (_pi != NULL) { - delete _pi; - _pi = NULL; + xvt_dm_progress_destroy(_pi); + _pi = NULL_WIN; } - return t; + return t - _start; } @@ -105,16 +106,13 @@ bool TTest_application::test1(TLog_report& log) TString80 msg; const int times = 10; - const clock_t start = start_progind(times, TR("Lettura file comuni")); - for (int i = 0; i < times; i++) + start_progind(times, TR("Lettura file comuni")); + for (int i = 1; i <= times; i++) { for (tab.first(); tab.good(); tab.next()) r++; - msg.format(FR("%ld records %ld msec"), r, clock() - start); - - _pi->set_text(msg); - if (!_pi->add_status()) + if (!update_progind(i)) { log.log(1, TR("Interrotto dall'utente")); ok = false; @@ -122,7 +120,7 @@ bool TTest_application::test1(TLog_report& log) } } - const clock_t t = stop_progind() - start; + const clock_t t = stop_progind(); msg.format("Lettura file comuni - " "%ld records in %ld msec - %lg records per sec", r, t, 1000.0*r/t); log.log(0, msg); @@ -139,21 +137,17 @@ bool TTest_application::test2(TLog_report& log) tab.freeze(); - clock_t start; TRecnotype r = 0; TString80 msg; + const int times = 10; + start_progind(times, TR("Lettura cursore comuni")); { - const int times = 10; - TProgress_monitor p(times, TR("Lettura cursore comuni")); - start = start_timer(); - for (int i = 0; i < times; i++) + for (int i = 1; i <= times; i++) { for (tab = 0; tab.pos() < n; ++tab) r++; - msg.format("Lettura cursore comuni\n%ld records %ld msec", r, clock() - start); - p.set_text(msg); - if (!p.add_status()) + if (!update_progind(i)) { log.log(1, TR("Interrotto dall'utente")); ok = false; @@ -161,7 +155,7 @@ bool TTest_application::test2(TLog_report& log) } } } - const clock_t t = clock() - start; + const clock_t t = stop_progind(); msg.format("Lettura cursore comuni: %ld records in %ld msec - %lg records per sec\n", r, t, 1000.0*r/t); log.log(0, msg); @@ -174,27 +168,23 @@ bool TTest_application::test3(TLog_report& log) TRelation rel(LF_COMUNI); TSorted_cursor tab(&rel, "CAPCOM|DENCOM"); - clock_t istart = start_timer(); + start_progind(1, TR("Inizializzazione")); const TRecnotype n = tab.items(); - clock_t istop = clock() - istart; + const clock_t istop = stop_progind(); tab.freeze(); - clock_t start; TRecnotype r = 0; TString256 msg; + const int times = 10; + start_progind(times, TR("Lettura cursore C.A.P.")); { - const int times = 10; - TProgress_monitor p(times, TR("Lettura cursore C.A.P.")); - start = start_timer(); - for (int i = 0; i < times; i++) + for (int i = 1; i <= times; i++) { for (tab = 0; tab.pos() < n; ++tab) r++; - msg.format("Lettura cursore C.A.P.\n%ld records %ld msec", r, clock() - start); - p.set_text(msg); - if (!p.addstatus(1)) + if (!update_progind(i)) { log.log(1, TR("Interrotto dall'utente")); ok = false; @@ -202,7 +192,7 @@ bool TTest_application::test3(TLog_report& log) } } } - const clock_t t = clock() - start; + const clock_t t = stop_progind(); msg.format("Lettura cursore ordinato %ld records in %ld msec - %lg records per sec - " "%ld msec for initialization", r, t, 1000.0*r/t, istop); @@ -217,13 +207,11 @@ bool TTest_application::test4(TLog_report& log) srand(r); TString8 cod; - clock_t start; { const int times = 10; - TProgress_monitor p(times, TR("Lettura casuale tramite cache")); cache().get(LF_COMUNI, cod); // Inizializzazione - start = start_timer(); - for (int i = 0; i < times; i++) + start_progind(times, TR("Lettura casuale tramite cache")); + for (int i = 1; i <= times; i++) { for (long j = 0; j < 10000; j++) { @@ -232,7 +220,7 @@ bool TTest_application::test4(TLog_report& log) cache().get(LF_COMUNI, cod); r++; } - if (!p.add_status()) + if (!update_progind(i)) { log.log(1, TR("Interrotto dall'utente")); ok = false; @@ -241,7 +229,7 @@ bool TTest_application::test4(TLog_report& log) } } - const clock_t t = clock() - start; + const clock_t t = stop_progind(); TString msg; msg.format("Lettura cached di %ld records in %ld msec - %lg records per sec", r, t, 1000.0*r/t); @@ -256,32 +244,28 @@ bool TTest_application::test5(TLog_report& log) srand(r); TString8 cod; - clock_t start; - { - const int times = 10; - TProgress_monitor p(times, TR("Lettura casuale senza cache")); - TLocalisamfile f(LF_COMUNI); - start = start_timer(); - for (int i = 0; i < times; i++) + const int times = 10; + TLocalisamfile f(LF_COMUNI); + start_progind(times, TR("Lettura casuale senza cache")); + for (int i = 1; i <= times; i++) + { + for (long j = 0; j < 10000; j++) { - for (long j = 0; j < 10000; j++) - { - const int rn = rand(); - cod.format("%c%03d", 'A'+(rn%2), rn % 1000); - f.put(COM_COM, cod); - f.read(); - r++; - } - if (!p.add_status()) - { - log.log(1, TR("Interrotto dall'utente")); - ok = false; - break; - } + const int rn = rand(); + cod.format("%c%03d", 'A'+(rn%2), rn % 1000); + f.put(COM_COM, cod); + f.read(); + r++; } - } + if (!update_progind(i)) + { + log.log(1, TR("Interrotto dall'utente")); + ok = false; + break; + } + } - const clock_t t = clock() - start; + const clock_t t = stop_progind(); TString msg; msg.format("Lettura casuale di %ld records in %ld msec - %lg records per sec", r, t, 1000.0*r/t); @@ -299,20 +283,20 @@ bool TTest_application::test6(TLog_report& log) { TTable tab("CZZ"); msg.format("Creazione di %ld records", n); - const clock_t start = start_progind(n, msg); + start_progind(n, msg); int i; - for (i = 0; i < n; i++) + for (i = 1; i <= n; i++) { - tab.put("CODTAB", i+1); + tab.put("CODTAB", i); tab.write(); - if (!_pi->add_status()) + if (!update_progind(i)) { log.log(1, TR("Interrotto dall'utente")); ok = false; break; } } - const clock_t t = stop_progind() - start; + const clock_t t = stop_progind(); msg.format("Scritti %ld records in %ld msec - %lg records per sec", i, t, 1000.0*i/t); log.log(0, msg); } @@ -325,18 +309,18 @@ bool TTest_application::test6(TLog_report& log) cur.freeze(); msg.format("Cancellazione %ld records", n); - const clock_t start = start_progind(n, msg); + start_progind(n, msg); for (cur = 0; cur.pos() < n; ++cur) { cur.file().remove(); - if (!_pi->add_status()) + if (!update_progind(cur.pos()+1)) { log.log(1, TR("Interrotto dall'utente")); ok = false; break; } } - const clock_t t = stop_progind() - start; + const clock_t t = stop_progind(); msg.format("Cancellati %ld records in %ld msec - %lg records per sec", n, t, 1000.0*n/t); log.log(0, msg); } @@ -354,21 +338,21 @@ bool TTest_application::test7(TLog_report& log) TSystemisamfile tab(LF_TAB); tab.open(_excllock); msg.format("Creazione di %ld records", n); - const clock_t start = start_progind(n, msg); + start_progind(n, msg); int i; - for (i = 0; i < n; i++) + for (i = 1; i <= n; i++) { tab.curr().put("COD", "CZZ"); - tab.curr().put("CODTAB", i+1); + tab.curr().put("CODTAB", i); tab.write(); - if (!_pi->addstatus(1)) + if (!update_progind(i)) { log.log(1, TR("Interrotto dall'utente")); ok = false; break; } } - const clock_t t = stop_progind() - start; + const clock_t t = stop_progind(); msg.format("Scritti %ld records in %ld msec - %lg records per sec", i, t, 1000.0*i/t); log.log(0, msg); tab.close(); @@ -385,20 +369,20 @@ bool TTest_application::test7(TLog_report& log) cur.freeze(); msg.format("Cancellazione %ld records", n); - const clock_t start = start_progind(n, msg); + start_progind(n, msg); for (cur = 0; cur.pos() < n; ++cur) { tab.put("COD", cur.curr().get("COD")); tab.put("CODTAB", cur.curr().get("CODTAB")); tab.remove(); - if (!_pi->addstatus(1)) + if (!update_progind(cur.pos()+1)) { log.log(1, TR("Interrotto dall'utente")); ok = false; break; } } - const clock_t t = stop_progind() - start; + const clock_t t = stop_progind(); msg.format("Cancellati %ld records in %ld msec - %lg records per sec", n, t, 1000.0*n/t); log.log(0, msg); tab.close(); @@ -406,11 +390,6 @@ bool TTest_application::test7(TLog_report& log) return ok; } -ostream* _out = NULL; - -static void str_serialize(const TObject& obj) -{ *_out << obj << '\n'; } - static bool str_deserialize(istream& i, TString& str) { char* buff = str.get_buffer(50); @@ -444,77 +423,59 @@ bool TTest_application::test8(TLog_report& log) if (first_time) { TString80 str; - msg = TR("Lettura big.txt con TArray"); - log.log(0, msg); - const clock_t start = start_progind(1, msg); + + start_progind(1, TR("Lettura big.txt con TArray")); ifstream big("recdesc/big.txt"); while (str_deserialize(big, str)) { - parole.add(str); - _pi->add_status(0L); + TString* s = str.len() <= 16 ? new TString16(str) : new TString(str); + parole.add(s); + update_progind(1); } - stop_progind(); + const clock_t t = stop_progind(); + const unsigned int n = parole.items(); + msg.format("TArray %ld parole %6ld msec - %5lg wps", n, t, 1000.0*n/t); + log.log(0, msg); } - const unsigned int n = parole.items(); + const int n = parole.items(); bool ok = n > 0; if (ok) { - TAssoc_array ass; - const clock_t start = start_progind(n, TR("Lettura big.txt con TAssoc_array")); - FOR_EACH_ARRAY_ITEM(parole, r, o) + THash_table ash(883); + start_progind(1, TR("Lettura big.txt con THash_table")); + for (int i = 1; i < n; i++) { - const TString& p = *(const TString*)o; - ass.add(p, p, false); - if ((r % 256 == 0) && !_pi->set_status(r+1)) + const TString& p = (const TString&)parole[i]; + ash.add(p, p, false); + if ((i % 10000 == 0) && !update_progind(1)) { ok = false; break; } } - const clock_t t = stop_progind() - start; - msg.format("TAssoc_array %ld(%ld) parole %6ld msec - %5lg wps", n, ass.items(), t, 1000.0*n/t); + const clock_t t = stop_progind(); + msg.format("THash_table %ld parole %6ld msec - %5lg wps", ash.items(), t, 1000.0*n/t); log.log(0, msg); - - if (first_time) - { - TFilename fn; fn.tempdir(); fn.add("assoc.txt"); - _out = new ofstream(fn); - ass.for_each(str_serialize); - _out->flush(); - delete _out; - _out = NULL; - } } if (ok) { - THash_table ash(1024*36); - const clock_t start = start_progind(n, TR("Lettura big.txt con THash_table")); - FOR_EACH_ARRAY_ITEM(parole, r, o) + TAssoc_array ass; + start_progind(1, TR("Lettura big.txt con TAssoc_array")); + for (int i = 1; i < n; i++) { - const TString& p = *(const TString*)o; - ash.add(p, p, false); - if ((r % 256 == 0) && !_pi->set_status(r+1)) + const TString& p = (const TString&)parole[i]; + ass.add(p, p, false); + if ((i % 10000 == 0) && !update_progind(1)) { ok = false; break; } } - const clock_t t = stop_progind() - start; - msg.format("THash_table %ld(%ld) parole %6ld msec - %5lg wps", n, ash.items(), t, 1000.0*n/t); + const clock_t t = stop_progind(); + msg.format("TAssoc_array %ld parole %6ld msec - %5lg wps", ass.items(), t, 1000.0*n/t); log.log(0, msg); - - if (first_time) - { - TFilename fn; fn.tempdir(); fn.add("hash.txt"); - _out = new ofstream(fn); - ash.for_each(str_serialize); - _out->flush(); - delete _out; - _out = NULL; - } - } if (!ok) diff --git a/ba/ba2800.cpp b/ba/ba2800.cpp index 755a5a6ce..b034233af 100644 --- a/ba/ba2800.cpp +++ b/ba/ba2800.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include