Patch level :4.0 790

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :nuove procedure aggiornamento client


git-svn-id: svn://10.65.10.50/trunk@15643 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2007-09-25 14:11:37 +00:00
parent 8678ec432c
commit 3283e4b731

View File

@ -4,7 +4,6 @@
#include <automask.h>
#include <controls.h>
#include <dongle.h>
#include <execp.h>
#include <modaut.h>
#include <execp.h>
#include <recarray.h>
@ -66,9 +65,7 @@ protected:
int do_level();
int do_tree();
int do_explore();
int get_user_status(const char* usr) const;
bool set_user_status(const char* usr, int status) const;
bool check_user();
static bool menu_item_handler(TMask_field& f, KEY k);
@ -1070,61 +1067,6 @@ bool TMenu_application::ask_user_password(TString& utente)
return ok;
}
// Testa stato utente: 0 inesistente; 1 = esiste; 2 connesso; 4 conversione in corso
// ATTENZIONE: non usare mai cache() in ba0!
int TMenu_application::get_user_status(const char* usr) const
{
CHECK(usr && *usr, "Utente nullo");
int status = 0;
if (prefix_valid())
{
TLocalisamfile utonti(LF_USER);
utonti.put(USR_USERNAME, usr);
status = utonti.read() == NOERR;
if (status)
{
if (utonti.get_bool(USR_CONNECTED))
status |= 2;
if (dongle().administrator() == usr && utonti.get(USR_AUTSTR) == "CONVERTING")
status |= 4;
}
}
else
{
// Senza file aperti questo e' il massimo che posso fare
status = dongle().administrator() == usr;
}
return status;
}
bool TMenu_application::set_user_status(const char* usr, int status) const
{
CHECK(usr && *usr, "Utente nullo");
bool ok = false;
if (prefix_valid())
{
TLocalisamfile utonti(LF_USER);
utonti.put(USR_USERNAME, usr);
if (utonti.read(_isequal, _lock) == NOERR)
{
utonti.put(USR_CONNECTED, status & 2 ? "X" : "");
ok = utonti.rewrite() == NOERR;
}
}
if (status & 2)
{
// Memorizza utente per riproporlo la prossima volta
TConfig campo_ini(CONFIG_INSTALL, "Main");
campo_ini.set("User", usr);
}
return ok;
}
bool TMenu_application::check_user()
{
bool ok = dongle().type() == _no_dongle;
@ -1137,7 +1079,7 @@ bool TMenu_application::check_user()
TConfig campo_ini(CONFIG_INSTALL, "Main");
const bool use_system_user = campo_ini.get_bool("AutoLogin");
if (use_system_user)
ok = get_user_status(utente) != 0; // L'utente esiste!
ok = !cache().get(LF_USER, utente).empty();
}
if (!ok)
@ -1145,8 +1087,8 @@ bool TMenu_application::check_user()
if (ok)
{
const bool converting = (get_user_status(dongle().administrator()) & 4) != 0;
if (converting)
const TString& autstr = cache().get(LF_USER, dongle().administrator(), USR_AUTSTR);
if (autstr == "CONVERTING")
{
TString msg; msg << TR("E' in corso una conversione archivi") << ":\n";
if (utente == dongle().administrator())
@ -1162,7 +1104,13 @@ bool TMenu_application::check_user()
}
if (ok)
set_user_status(utente, 3); // Esistente e connesso (1 | 2 = 3)
{
dongle().logout();
user() = utente;
ok = get_serial_number() >= 0;
if (!ok)
error_box(TR("Probabilmente è stato superato il numero massimo di utenti"));
}
if (ok)
{
@ -1336,7 +1284,8 @@ bool TMenu_application::test_programs()
//mette il flag di installing
set_installing_flag();
//lancia setup in modalita' aggiornamento client e si suicida! (banzai!!)
TExternal_app app("setup/setup.exe -uc");
TExternal_app app("setup\\setup.exe -uc");
app.run(true);
//se lancia un'installazione->esce!!!
@ -1391,8 +1340,17 @@ bool TMenu_application::user_create()
void TMenu_application::deconnect_user()
{
if (get_user_status(user()) & 2) // Se e' connesso
set_user_status(user(), 1); // Sconnettilo
if (prefix_valid())
{
TLocalisamfile users(LF_USER);
users.put("USERNAME", user());
const int err = users.read(_isequal, _lock);
if (err == NOERR)
{
users.zero("CONNECTED");
users.rewrite();
}
}
}
bool TMenu_application::destroy()