diff --git a/ci/ci0400.cpp b/ci/ci0400.cpp index b40b5bc05..0169a455f 100755 --- a/ci/ci0400.cpp +++ b/ci/ci0400.cpp @@ -63,7 +63,6 @@ bool TImmissioneDocumenti_app::has_documents(TDate& day) void TImmissioneDocumenti_app::init_tabs() { - TString almanacname; TString pagename; TString currfilter; int items; @@ -75,16 +74,16 @@ void TImmissioneDocumenti_app::init_tabs() configfile.list_paragraphs(_tabs); items = _tabs.items(); + const short id = F_AL01; - for (int i=0;ifind_by_fieldname(pagename); - currpage->set_prompt(_tabs.row(i)); +// TMask_field* currpage = _mask->find_by_fieldname(pagename); ??? cazzo e' +// currpage->set_prompt(_tabs.row(i)); _filters.add(currfilter); - almanacname.format("Almanacco %2d",i); - _mask->activate_almanac((TAlmanac_field*)_mask->find_by_fieldname(almanacname), i, TDate(TODAY)); + _mask->activate_almanac(id + i, i, TDate(TODAY)); } } @@ -106,7 +105,7 @@ void TImmissioneDocumenti_app::init_flags() for (cursor=0;cursor.pos()selected_year(), "33"); + configfile.set("ANNO", curr_almanac().selected_year(), "33"); configfile.set("CODNUM", doctype, "33"); } diff --git a/ci/cilib.cpp b/ci/cilib.cpp index 55feceb22..7fab4251a 100755 --- a/ci/cilib.cpp +++ b/ci/cilib.cpp @@ -23,62 +23,71 @@ TMask_field* TAlmanac_mask::parse_field(TScanner& scanner) bool TAlmanac_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { + byte page = curr_page(); + if (page >=0 && page < 16) + { + TAlmanac_field & al = curr_almanac(); - switch (o.dlg()) - { - case F_PREVMONTH: + switch (o.dlg()) { - const int year = curr_almanac()->selected_year(); - curr_almanac()->move_selected_month(-1); - this->set(F_CHANGEMONTH,curr_almanac()->selected_month()); - if (year!=curr_almanac()->selected_year()) + case F_PREVMONTH: { - this->set(F_CHANGEYEAR,curr_almanac()->selected_year()); - this->set_year(curr_almanac()->selected_year()); + const int year = al.selected_year(); + al.move_selected_month(-1); + this->set(F_CHANGEMONTH, al.selected_month()); + if (year != al.selected_year()) + { + set(F_CHANGEYEAR, al.selected_year()); + set_year(al.selected_year()); + } } - } - break; - case F_CHANGEMONTH: - curr_almanac()->set_selected_month(this->get_int(F_CHANGEMONTH)); - break; - case F_NEXTMONTH: - { - const int year = curr_almanac()->selected_year(); - curr_almanac()->move_selected_month(1); - this->set(F_CHANGEMONTH,curr_almanac()->selected_month()); - if (year!=curr_almanac()->selected_year()) + break; + case F_CHANGEMONTH: + al.set_selected_month(get_int(F_CHANGEMONTH)); + break; + case F_NEXTMONTH: { - this->set(F_CHANGEYEAR,curr_almanac()->selected_year()); - this->set_year(curr_almanac()->selected_year()); + const int year = al.selected_year(); + + al.move_selected_month(1); + set(F_CHANGEMONTH, al.selected_month()); + if (year != al.selected_year()) + { + set(F_CHANGEYEAR, al.selected_year()); + set_year(al.selected_year()); + } } - } - break; - case F_CHANGEYEAR: - this->set_year(this->get_int(F_CHANGEMONTH)); - break; - default: - break; - } + break; + case F_CHANGEYEAR: + set_year(get_int(F_CHANGEYEAR)); + break; + default: + break; + } + } - return TRUE; + return true; } -void TAlmanac_mask::activate_almanac(TAlmanac_field* fld, int page, TDate& sdate) +void TAlmanac_mask::activate_almanac(const short id, int page, TDate& sdate) { - _almanacs[page] = fld; - _almanacs[page]->set_selected_date(sdate); + _almanacs[page] = id2pos(id); + almanac(page).set_selected_date(sdate); if (page>_activepages) { _activepages = page; - enable_page(0); - disable_page(page+1); + if (page > 0) + { + enable_page(page); + disable_page(page+1); + } } } void TAlmanac_mask::set_year(int newyear) { - for(int i=0;i<_activepages;i++) - _almanacs[i]->set_selected_year(newyear); + for(byte p = 0; p < _activepages; p++) + almanac(p).set_selected_year(newyear); change_year(newyear); } @@ -96,13 +105,9 @@ void TAlmanac_mask::activate_almanac(TAlmanac_field* fld, int page, TDate& sdate :TAutomask() { read_mask(name, 0, -1); - + set_handlers(); } -TAlmanac_mask::~TAlmanac_mask() -{ -// delete[] _almanacs; -} /////////////////////////////////////////////////////////// // TAlmanac_field @@ -121,28 +126,31 @@ bool TAlmanac_field::is_date_void(TDate& cdate) void TAlmanac_field::set_selected_day(int nday) { if(nday>=1 && nday<=TDate::last_day(_selecteddate.month(),_selecteddate.year())) + { _selecteddate.set_day(nday); -// almanac_win().force_update(); - win().force_update(); + win().force_update(); + } } void TAlmanac_field::move_selected_day(int ddays) { - _selecteddate+=ddays; + _selecteddate+=ddays; win().force_update(); } void TAlmanac_field::set_selected_month(int nmonth) { - if(nmonth>=1 && nmonth<=12) + if(nmonth >= 1 && nmonth <= 12) + { _selecteddate.set_month(nmonth); - win().force_update(); + win().force_update(); + } } void TAlmanac_field::move_selected_month(int dmonths) { _selecteddate.addmonth(dmonths); - win().force_update(); + win().force_update(); } void TAlmanac_field::set_selected_year(int nyear) diff --git a/ci/cilib.h b/ci/cilib.h index 832b521e9..a12be1208 100755 --- a/ci/cilib.h +++ b/ci/cilib.h @@ -83,7 +83,7 @@ public: // @access Public Member public: // @cmember Costruttore - TAlmanac_field(TMask* m) : TWindowed_field(m),_showmonthname(true), _selecteddate(TODAY) { } + TAlmanac_field(TMask* m) : TWindowed_field(m),_showmonthname(true), _selecteddate(TODAY), _padding(0) { } // @cmember Distruttore virtual ~TAlmanac_field() { } }; @@ -133,19 +133,17 @@ public: class TAlmanac_mask : public TAutomask { // @author:(INTERNAL) Brugno - - // @access Protected Member -protected: // @cmember:(INTERNAL) Puntatori ai campi calendario - TAlmanac_field* _almanacs[MAX_PAGES]; + short _almanacs[MAX_PAGES]; // @cmember:(INTERNAL) Numero di pagine attive int _activepages; -// shortcut per l'accesso all'almanacco della pagina corrente -#define curr_almanac() _almanacs[this->curr_page()] - // @access Protected Member protected: + // shortcut per l'accesso all'almanacco della pagina corrente + TAlmanac_field & almanac(byte page) const { return (TAlmanac_field &) fld(_almanacs[page]);} + // shortcut per l'accesso all'almanacco della pagina corrente + TAlmanac_field & curr_almanac() const { return almanac(curr_page());} // override da TAutomask virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); @@ -154,24 +152,20 @@ public: // override da TAutomask virtual TMask_field* parse_field(TScanner& scanner); // @cmember Gestione calendari: Attiva l'almanacco sulla pagina specificata per la data specificata - void activate_almanac(TAlmanac_field* fld, int page, TDate& sdate); + void activate_almanac(short id, int page, TDate& sdate); // @cmember Gestione calendari: Cambia l'anno su tutti i calendari void set_year(int newyear); // @cmember Gestione calendari: Ritorna il giorno selezionato nella pagina corrente - const TDate& selected_day() const { return curr_almanac()->selected_date(); } - - // @access Public Member -public: + const TDate& selected_day() const { return curr_almanac().selected_date(); } // @cmember Gestione eventi calendario: Controlla la presenza di documenti nella data attiva virtual bool is_date_void(TDate& cdate); // @cmember Gestione eventi calendario: Controlla la presenza di documenti nella data attiva virtual void change_year(int newyear); - // @access Public Member -public: // @cmember Costruttore TAlmanac_mask(const char * name); // @cmember Distruttore - ~TAlmanac_mask(); + ~TAlmanac_mask() {} }; + #endif