#include #include #include "lvlib.h" #include "../ci/cilib.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); const bool l2 = has_module(L2AUT); if (!l2) _mask->hide(-1); } 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; }