#include "comandi.h"
extern const char *kStrNomiPulsanti[kTotPulsanti];
/*==============================================================================
Estrae a sorte un nominativo.
==============================================================================*/
void Estrai( HWND hwnd ) {
GLOBALE *g = RicavaDatiGlobali( hwnd );
if( g->e->ricava_nDaEstrarre() > 0 ) {
g->e->estrai();
AggiornaStatoPulsanti( hwnd );
MostraDati( hwnd );
}
}
/*==============================================================================
Recupera dalla lista dei nominativi estratti l'ultimo estratto e lo ricolloca
nella lista dei nominativi da estrarre.
==============================================================================*/
void Annulla( HWND hwnd ) {
GLOBALE *g = RicavaDatiGlobali( hwnd );
if( g->e->ricava_nEstratti() > 0 ) {
g->e->annulla_estrazione();
AggiornaStatoPulsanti( hwnd );
MostraDati( hwnd );
}
}
/*==============================================================================
Finestra di conferma per il comando "Ricarica".
==============================================================================*/
bool ConfermaRicarica( HWND hwnd ) {
UINT stile = MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2;
return MessageBox( hwnd, kStrConfermaRicarica,
kStrNomiPulsanti[kPPRicarica], stile ) == IDOK;
}
/*==============================================================================
Ripristina i dati inizialmente caricati dal file.
==============================================================================*/
void Ricarica( HWND hwnd ) {
if( !ConfermaRicarica(hwnd) ) return;
GLOBALE *g = RicavaDatiGlobali( hwnd );
const char *dati = CaricaFileDiTesto( g->percorso_file );
if( dati == NULL ) {
Errore( kErrDatiNonCaricati, hwnd );
return;
}
try {
g->e->carica_dati( dati );
AggiornaStatoPulsanti( hwnd );
MostraDati( hwnd );
} catch( ... ) {
Errore( kErrDatiNonCaricati, hwnd );
}
delete[] dati;
}
/*==============================================================================
Finestra di conferma per il comando "Inizializza".
==============================================================================*/
bool ConfermaInizializzazione( HWND hwnd ) {
UINT stile = MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2;
return MessageBox( hwnd, kStrConfermaInizializzazione,
kStrNomiPulsanti[kPPInizializza], stile ) == IDOK;
}
/*==============================================================================
Ricollota tutti i nominativi nella lista dei nominativi da estrarre.
==============================================================================*/
void Inizializza( HWND hwnd ) {
GLOBALE *g = RicavaDatiGlobali( hwnd );
if( g->e->ricava_nEstratti() > 0 ) {
if( !ConfermaInizializzazione(hwnd) ) return;
// riconduce tutti i nominativi nell'elenco dei nomi da estrarre
g->e->reimposta();
AggiornaStatoPulsanti( hwnd );
MostraDati( hwnd );
}
}
/*==============================================================================
Riduce il programma ad icona.
==============================================================================*/
void Nascondi( HWND hwnd ) {
ShowWindow( hwnd, SW_MINIMIZE );
}
/*==============================================================================
Finestra di conferma per il comando "Chiudi".
==============================================================================*/
bool ConfermaChiusura( HWND hwnd ) {
UINT stile = MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2;
return MessageBox( hwnd, kStrConfermaChiusura,
kStrNomiPulsanti[kPPChiudi], stile ) == IDOK;
}
/*==============================================================================
Registra gli elenchi nello stesso file dal quale sono stati caricati e esce dal
progrgamma.
NB - IL FILE ORIGINALE VIENE SOVRASCRITTO SENZA PREAVVISO
==============================================================================*/
void Chiudi( HWND hwnd ) {
if( ConfermaChiusura(hwnd) ) {
GLOBALE *g = RicavaDatiGlobali( hwnd );
UINT errore = RegistraDati( hwnd, g->percorso_file );
if( errore != kErrNessunErrore ) Errore( errore, hwnd );
DestroyWindow( hwnd );
}
}
/*==============================================================================
Se il puntatore del mouse (cursore) e' visibile, lo nasconde; se è invisibile,
lo mostra.
==============================================================================*/
void MostraNascondiPuntatore( void ) {
static BOOL puntatore_visibile = TRUE;
puntatore_visibile = !puntatore_visibile;
ShowCursor( puntatore_visibile );
}