2008-09-05 14:47:54 +00:00
# include <confapp.h>
2008-11-01 18:09:05 +00:00
# include "lvlib.h"
2009-03-12 12:15:09 +00:00
# include "../ci/cilib.h"
2008-09-08 09:09:43 +00:00
# include "lv0300a.h"
2008-09-05 14:47:54 +00:00
2008-11-01 18:09:05 +00:00
class TConf_lavanderie_mask : public TAlmanac_mask
{
TLavanderie_calendar _cal ; // array di TBit_array. Ognuno di essi <20> lungo 366 e rappresenta i flag di presenza documenti per ogni giorno dell'anno. Ogni page della maschera ha bisogno di un bitarray diverso
protected :
virtual bool on_field_event ( TOperable_field & o , TField_event e , long jolly ) ;
public :
// ereditato da TAlmanac_mask
2008-12-01 16:52:47 +00:00
virtual bool is_date_void ( int currpage , const TDate & cdate ) ;
2008-11-01 18:09:05 +00:00
virtual void change_year ( int newyear ) ;
2009-01-09 12:42:52 +00:00
const TLavanderie_calendar & calendario ( ) const { return _cal ; }
2008-11-01 18:09:05 +00:00
// metodi di accesso
void update_current_calendar ( int year ) ;
// apertura del foglio interno di gestione dei documenti
virtual void open_day_mask ( const TDate & date ) ;
// Costruttore
2008-12-01 16:52:47 +00:00
TConf_lavanderie_mask ( const char * name ) ;
2008-11-01 18:09:05 +00:00
// Distruttore
~ TConf_lavanderie_mask ( ) { }
} ;
bool TConf_lavanderie_mask : : on_field_event ( TOperable_field & o , TField_event e , long jolly )
{
switch ( o . dlg ( ) )
{
case DLG_OK :
default :
TAlmanac_mask : : on_field_event ( o , e , jolly ) ;
break ;
}
return true ;
}
2008-12-01 16:52:47 +00:00
bool TConf_lavanderie_mask : : is_date_void ( int currpage , const TDate & cdate )
2008-11-01 18:09:05 +00:00
{
return _cal . is_holiday ( cdate ) ;
}
void TConf_lavanderie_mask : : change_year ( int newyear )
{
_cal . write ( ) ;
_cal . read ( newyear ) ;
}
void TConf_lavanderie_mask : : open_day_mask ( const TDate & date )
{
TDate d ( date ) ;
if ( ! d . ok ( ) )
2008-12-01 16:52:47 +00:00
d = almanac ( ) . selected_date ( ) ;
2008-11-01 18:09:05 +00:00
const bool holiday = _cal . is_holiday ( d ) ? false : true ;
_cal . set_holiday ( d , holiday ) ;
almanac ( ) . force_update ( ) ;
}
void TConf_lavanderie_mask : : update_current_calendar ( int year )
{
change_year ( year ) ;
}
2008-12-01 16:52:47 +00:00
TConf_lavanderie_mask : : TConf_lavanderie_mask ( const char * name )
: TAlmanac_mask ( name ) , _cal ( TDate ( TODAY ) . year ( ) )
{
activate_almanac ( F_ALMANAC , " " ) ;
2009-01-05 10:02:11 +00:00
_cal . read ( ) ;
2008-12-01 16:52:47 +00:00
}
2008-09-05 14:47:54 +00:00
class TConf_Lavanderie : public TConfig_application
{
2008-11-01 18:09:05 +00:00
TConf_lavanderie_mask * _mask ;
2008-10-07 09:53:36 +00:00
protected :
virtual void load_mask ( ) ;
2008-11-01 18:09:05 +00:00
virtual TMask * get_mask ( ) { return _mask ; }
virtual TMask * create_mask ( const TFilename & f ) ;
virtual void save_mask ( bool tosave ) ;
2008-09-05 14:47:54 +00:00
virtual bool user_create ( ) ;
2008-10-07 09:53:36 +00:00
public :
2008-11-01 18:09:05 +00:00
TConf_Lavanderie ( ) : TConfig_application ( CONFIG_DITTA ) , _mask ( NULL ) { }
2008-09-05 14:47:54 +00:00
virtual ~ TConf_Lavanderie ( ) { }
} ;
2008-11-01 18:09:05 +00:00
TMask * TConf_Lavanderie : : create_mask ( const TFilename & f )
{
if ( _mask = = NULL )
_mask = new TConf_lavanderie_mask ( f ) ;
return _mask ;
}
2008-09-05 14:47:54 +00:00
bool TConf_Lavanderie : : user_create ( )
{
TConfig conf ( CONFIG_DITTA ) ;
conf . set ( " EdMask " , " lv0300a " , " lv " ) ;
return true ;
}
2008-10-07 09:53:36 +00:00
void TConf_Lavanderie : : load_mask ( )
{
2008-11-01 18:09:05 +00:00
TMask * m = get_mask ( ) ;
if ( m ! = NULL )
{
TConfig_application : : load_mask ( ) ;
FOR_EACH_MASK_SHEET ( ( * m ) , i , s )
{
s - > destroy ( ) ;
TMask & sm = s - > sheet_mask ( ) ;
2008-10-07 09:53:36 +00:00
2008-11-01 18:09:05 +00:00
bool found = true ;
for ( int r = 0 ; found ; r + + )
{
FOR_EACH_MASK_FIELD ( sm , j , f )
{
const TFieldref * fr = f - > field ( ) ;
if ( fr ! = NULL )
{
const TString & value = get_config ( ) - > get ( fr - > name ( ) , NULL , r ) ;
if ( value . empty ( ) & & f - > dlg ( ) = = 101 )
{
found = false ;
break ;
}
s - > row ( r ) . add ( value , s - > cid2index ( f - > dlg ( ) ) ) ;
}
}
if ( found )
s - > check_row ( r , 1 ) ;
}
s - > force_update ( ) ;
}
}
2008-10-07 09:53:36 +00:00
}
void TConf_Lavanderie : : save_mask ( bool tosave )
{
TConfig * cnf = get_config ( ) ;
2009-01-09 14:30:31 +00:00
if ( ! tosave | | cnf = = NULL )
2008-10-07 09:53:36 +00:00
return ;
TConfig_application : : save_mask ( tosave ) ;
2009-01-09 14:30:31 +00:00
TAssoc_array & v = cnf - > list_variables ( " lv " ) ;
2008-10-07 09:53:36 +00:00
FOR_EACH_ASSOC_STRING ( v , h , k , str )
{
const TFixed_string name = k ;
2009-01-05 10:02:11 +00:00
if ( name . find ( ' ( ' ) > 0 & & ! name . starts_with ( " CAL " ) )
2008-10-07 09:53:36 +00:00
v . remove ( name ) ;
}
2009-01-09 12:42:52 +00:00
TConf_lavanderie_mask & m = ( TConf_lavanderie_mask & ) * get_mask ( ) ;
2008-10-07 09:53:36 +00:00
FOR_EACH_MASK_SHEET ( m , i , s )
{
TMask & sm = s - > sheet_mask ( ) ;
FOR_EACH_SHEET_ROW ( * s , j , row )
{
FOR_EACH_MASK_FIELD ( sm , k , f )
{
const TFieldref * fr = f - > field ( ) ;
if ( fr ! = NULL )
{
const char * value = row - > get ( s - > cid2index ( f - > dlg ( ) ) ) ;
cnf - > set ( fr - > name ( ) , value , NULL , true , j ) ;
}
}
}
}
2009-01-09 14:30:31 +00:00
cnf - > set_paragraph ( " " ) ;
2009-01-09 12:42:52 +00:00
m . calendario ( ) . write ( ) ;
2009-01-09 14:30:31 +00:00
cnf - > set_paragraph ( " lv " ) ;
2008-10-07 09:53:36 +00:00
}
2008-09-05 14:47:54 +00:00
int lv0300 ( int argc , char * argv [ ] )
{
TConf_Lavanderie appc ;
2008-10-07 09:53:36 +00:00
appc . run ( argc , argv , TR ( " Parametri Lavanderie industriali " ) ) ;
2008-09-05 14:47:54 +00:00
return 0 ;
2008-09-16 13:08:58 +00:00
}