Files correlati : Ricompilazione Demo : [ ] Commento :risolto l'annoso problema del calendario! git-svn-id: svn://10.65.10.50/trunk@18001 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			191 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			191 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
| #include <confapp.h>
 | |
| 
 | |
| #include "../ci/cilib.h"
 | |
| #include "lvlib.h"
 | |
| #include "lv0300a.h"
 | |
| 
 | |
| class TConf_lavanderie_mask : public TAlmanac_mask
 | |
| {
 | |
|   TLavanderie_calendar _cal; // array di TBit_array. Ognuno di essi č 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
 | |
|   virtual bool is_date_void(int currpage, const TDate& cdate);
 | |
|   virtual void change_year(int newyear); 
 | |
| 	const TLavanderie_calendar & calendario() const { return _cal; }
 | |
| 
 | |
| // 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
 | |
|   TConf_lavanderie_mask(const char* name);
 | |
| // 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;
 | |
| }
 | |
| 
 | |
| bool TConf_lavanderie_mask::is_date_void(int currpage, const TDate& cdate) 
 | |
| { 
 | |
|   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())
 | |
| 		d = almanac().selected_date();
 | |
| 	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);
 | |
| }
 | |
| 
 | |
| TConf_lavanderie_mask::TConf_lavanderie_mask(const char* name)
 | |
|                      : TAlmanac_mask(name), _cal(TDate(TODAY).year())
 | |
| {
 | |
|   activate_almanac(F_ALMANAC, "");
 | |
| 	_cal.read();
 | |
| }
 | |
| 
 | |
| class TConf_Lavanderie : public TConfig_application
 | |
| {
 | |
| 	TConf_lavanderie_mask * _mask;
 | |
| 
 | |
| protected:
 | |
|   virtual void load_mask();
 | |
| 	virtual TMask* get_mask() {return _mask;}
 | |
| 	virtual TMask* create_mask(const TFilename & f);
 | |
| 	virtual void save_mask(bool tosave) ;
 | |
|   virtual bool user_create( );
 | |
|   
 | |
| public:
 | |
| 	TConf_Lavanderie() : TConfig_application( CONFIG_DITTA ), _mask(NULL) {}
 | |
|   virtual ~TConf_Lavanderie( ){ }
 | |
| };
 | |
| 
 | |
| TMask* TConf_Lavanderie::create_mask(const TFilename & f)
 | |
| {
 | |
| 	if (_mask == NULL)
 | |
| 		_mask = new TConf_lavanderie_mask(f);
 | |
| 	return _mask;
 | |
| }
 | |
| 
 | |
| bool TConf_Lavanderie::user_create( )
 | |
| {
 | |
|   TConfig conf(CONFIG_DITTA );
 | |
|   conf.set( "EdMask", "lv0300a", "lv" );
 | |
|   return true;
 | |
| }
 | |
| 
 | |
| void TConf_Lavanderie::load_mask()
 | |
| {
 | |
|   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();
 | |
| 
 | |
| 			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();
 | |
| 		}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| void TConf_Lavanderie::save_mask(bool tosave)
 | |
| {
 | |
|   TConfig* cnf = get_config();
 | |
|   if (!tosave || cnf == NULL) 
 | |
|     return;
 | |
| 
 | |
|   TConfig_application::save_mask(tosave);
 | |
| 
 | |
|   TAssoc_array& v = cnf->list_variables("lv");
 | |
|   FOR_EACH_ASSOC_STRING(v, h, k, str)
 | |
|   {
 | |
|     const TFixed_string name = k;
 | |
|     if (name.find('(') > 0 && !name.starts_with("CAL"))
 | |
|       v.remove(name);
 | |
|   }
 | |
|   
 | |
|   TConf_lavanderie_mask & m = (TConf_lavanderie_mask &) *get_mask();
 | |
| 
 | |
|   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);
 | |
|         }
 | |
|       }
 | |
|       
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   cnf->set_paragraph("");
 | |
| 	m.calendario().write();
 | |
|   cnf->set_paragraph("lv");
 | |
| }
 | |
|  
 | |
| int lv0300(int argc, char* argv[])
 | |
| {
 | |
|   TConf_Lavanderie appc;
 | |
|   appc.run(argc, argv, TR("Parametri Lavanderie industriali"));
 | |
|   return 0;
 | |
| } |