Patch level : 10.0 770

Files correlati     : ba0
Ricompilazione Demo : [ ]
Commento            :
0001656: Rinumerazione n.protocollo - se sbaglio password si blocca tutto l'applicativo.
Rinumerazione n.protocollo - se sbaglio password si blocca tutto l'applicativo.Riesco ad uscire solo dal task manager!


git-svn-id: svn://10.65.10.50/trunk@20627 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-06-23 15:38:10 +00:00
parent 4233014219
commit 8d91494a26
5 changed files with 71 additions and 35 deletions

View File

@ -1824,7 +1824,22 @@ long TMenu_application::handler(WINDOW win, EVENT* ep)
TOutlook_mask& m = (TOutlook_mask&)*_mask;
m.handler(m.win(), ep);
}
default : break;
break;
case E_SIZE:
if (_tree_view == 3)
{
WINDOW winm = _mask->win();
RCT rctw; xvt_vobj_get_client_rect(win, &rctw);
RCT rctm; xvt_vobj_get_client_rect(winm, &rctm);
if (rctm.right != rctw.right || rctm.bottom != rctw.bottom)
{
xvt_vobj_move(winm, &rctw);
_mask->force_update();
}
}
break;
default:
break;
}
}
return ret;

View File

@ -282,11 +282,14 @@ bool TMenuitem::perform_submenu() const
}
// Alcuni programmi devono essere eseguiti singolarmente: ba1, ba2, cg6
// oppure tutti quelli protetti da password di manutenzione come cg1 -1
bool TMenuitem::run_modal() const
{
bool yes = true;
if (submenu().menu().mask_mode() == 3)
yes = _action.match("ba[12] -*", true) || _action.starts_with("cg6", true);
if (submenu().menu().mask_mode() == 3) // outlook mode
{
yes = _password || _action.match("ba[12] -*", true) || _action.starts_with("cg6", true);
}
return yes;
}
@ -315,12 +318,12 @@ bool TMenuitem::perform_program() const
if (mask.run() == K_ENTER)
{
const TDate oggi(TODAY);
TString pwd;
TString80 pwd;
pwd << dongle().administrator() << (oggi.month() + oggi.day());
ok = pwd == mask.get(F_PASSWORD);
}
if (!ok)
error_box("Password di servizio errata!\nAccesso negato.");
return error_box("Password di servizio errata!\nAccesso negato.");
}
if (_firm && main_app().get_firm() == 0)

View File

@ -482,6 +482,7 @@ public:
void set_back(const TString& image);
WINDOW page_win(short page);
void remove_all_pages();
void remove_page(short page);
void kill_processes() { ((TBook_window&)win()).kill_processes(); }
TBook_field(TMask* m) : TWindowed_field(m) {}
@ -523,6 +524,19 @@ void TBook_field::remove_all_pages()
bw.remove_page(NULL_WIN);
}
void TBook_field::remove_page(short page)
{
TBook_window& bw = (TBook_window&)win();
if (page >= 0)
{
WINDOW pw = bw.page_win(page);
if (pw != NULL_WIN)
bw.remove_page(pw);
}
else
bw.remove_page(NULL_WIN);
}
TField_window* TBook_field::create_window(int x, int y, int dx, int dy, WINDOW parent)
{
return new TBook_window(x, y, dx, dy, parent, this);
@ -700,25 +714,28 @@ bool TOutlook_mask::on_field_event(TOperable_field& o, TField_event e, long joll
const short pg = add_page(mi);
if (pg >= 0)
{
mi.perform(); // Esegui in asincrono in pagina nuova
for (int i = 0; i < 20; i++)
if (mi.perform()) // Esegui in asincrono in pagina nuova
{
xvt_sys_sleep(500);
if (xvt_win_get_children_count(bf.page_win(pg)) != 0)
break;
}
for (int i = 0; i < 20; i++)
{
xvt_sys_sleep(500);
if (xvt_win_get_children_count(bf.page_win(pg)) != 0)
break;
}
int ico = mi.icon();
if (ico <= 0 || ico == ICON_RSRC)
{
const int area = get_int(DLG_LOOK);
if (area > 0 && area < _icon.items())
ico = _icon.get_int(area);
else
ico = ICON_RSRC;
int ico = mi.icon();
if (ico <= 0 || ico == ICON_RSRC)
{
const int area = get_int(DLG_LOOK);
if (area > 0 && area < _icon.items())
ico = _icon.get_int(area);
else
ico = ICON_RSRC;
}
set_page_caption(pg, mi.caption(), ico);
}
set_page_caption(pg, mi.caption(), ico);
else
book_field().remove_page(pg); // Rimuovi pagina inm caso d'errore
}
}
}

View File

@ -371,7 +371,7 @@ int TInstaller_mask::get_module_number(const TString& module) const
if (module.full())
{
if (module == "ba" || module == "sy") //moduli base e sistema: deve ritornare 0;
return 0;
return BAAUT;
aut = dongle().module_name2code(module);
ok = aut < ENDAUT;

View File

@ -489,14 +489,15 @@ bool TReport_base_mask::draw_3d_rect(short id, COLOR rgb) const
if (ok)
{
TMask_field& f = fld(pos);
if (f.active() && f.parent() == curr_win())
WINDOW pw = f.parent();
if (f.active() && pw == curr_win())
{
RCT rctfld; f.get_rect(rctfld);
const int x = rctfld.right / CHARX + 1;
const int y = rctfld.top / ROWY + 1;
RCT rct = resize_rect(x, y, -3, 1, W_PLAIN, f.parent());
RCT rct = resize_rect(x, y, -3, 1, W_PLAIN, pw);
rct.top = rctfld.top; rct.bottom = rctfld.bottom;
xi_draw_3d_rect((XinWindow)f.parent(), (XI_RCT*)&rct, TRUE, 2, BTN_LIGHT_COLOR, rgb, BTN_DARK_COLOR);
xi_draw_3d_rect((XinWindow)pw, (XI_RCT*)&rct, TRUE, 2, BTN_LIGHT_COLOR, rgb, BTN_DARK_COLOR);
}
}
return ok;
@ -517,31 +518,31 @@ bool TReport_base_mask::choose_printer_font(XVT_FNTID font)
void TReport_base_mask::update()
{
const TMask_field& fld = field(F_FONT_SELECT);
if (fld.active() && curr_win() == fld.parent())
WINDOW pw = fld.parent();
if (fld.active() && curr_win() == pw)
{
RCT rctfld; fld.get_rect(rctfld);
const int x = rctfld.right / CHARX + 1;
const int y = rctfld.top / ROWY + 1;
RCT& rct = resize_rect(x, y, -3, 2, W_PLAIN, fld.parent());
RCT& rct = resize_rect(x, y, -3, 2, W_PLAIN, pw);
rct.top = rctfld.top; rct.bottom = rctfld.bottom;
xi_draw_3d_rect((XinWindow)fld.parent(), (XI_RCT*)&rct, TRUE, 2, MASK_LIGHT_COLOR,
xi_draw_3d_rect((XinWindow)pw, (XI_RCT*)&rct, TRUE, 2, MASK_LIGHT_COLOR,
_bgcolor, MASK_DARK_COLOR);
rct.left += 2; rct.right -= 2;
rct.top += 2; rct.bottom -= 2;
xvt_rect_deflate(&rct, 2, 2);
xvt_dwin_set_clip(win(), &rct);
XVT_FNTID fontid = xvt_font_create();
xvt_font_copy(fontid, _font.get_xvt_font(*this), XVT_FA_ALL);
xvt_font_set_size(fontid, _font.size());
xvt_dwin_set_font(fld.parent(), fontid);
xvt_dwin_set_font(pw, fontid);
set_opaque_text(false);
set_color(_fgcolor, _bgcolor);
advanced_draw_text_line(fld.parent(), _font.name(), rct, _halign, _valign);
advanced_draw_text_line(pw, _font.name(), rct, _halign, _valign);
xvt_font_destroy(fontid);
}
const short cid[3] = { F_FGCOLOR, F_BGCOLOR, F_SHCOLOR };
const COLOR col[3] = { _fgcolor, _bgcolor, _shcolor };
const short cid[4] = { F_FGCOLOR, F_BGCOLOR, F_SHCOLOR, 0 };
const COLOR col[4] = { _fgcolor, _bgcolor, _shcolor, 0 };
for (int i = 0; i < 3; i++)
draw_3d_rect(cid[i], col[i]);
}