From 25c09860a9367aed713ffab6e499280d7972a7bb Mon Sep 17 00:00:00 2001 From: brugno Date: Fri, 22 Apr 2005 15:37:43 +0000 Subject: [PATCH] Patch level : Files correlati :intera directory CI Ricompilazione Demo : [ ] Commento : prima versione funzionante del programma git-svn-id: svn://10.65.10.50/trunk@13000 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ci/ci0400.cpp | 94 ++++++++++++++++++++++++++++++--------------------- ci/ci0400.h | 9 +++-- ci/ci0400.ini | 9 ++--- ci/cilib.cpp | 52 +++++++++++++++++----------- ci/cilib.h | 17 ++++++++-- 5 files changed, 111 insertions(+), 70 deletions(-) diff --git a/ci/ci0400.cpp b/ci/ci0400.cpp index c9a229b8e..b58b27a07 100755 --- a/ci/ci0400.cpp +++ b/ci/ci0400.cpp @@ -22,49 +22,63 @@ void TImmissioneDocumenti_app::init_tabs() { TToken_string pagenames; - int items; + const short id = F_AL01; + int item = 0; - _tabs.destroy(); _filters.destroy(); pagenames = ""; TConfig configfile("ci0400.ini"); - configfile.list_paragraphs(_tabs); + configfile.set_paragraph("Main"); - items = _tabs.items(); - const short id = F_AL01; - - for (int i = 0; i < items; i++) + while (configfile.exist("Descr",item)) { - pagenames.add(_tabs.row(i)); - _filters.add(configfile.get("Filtro",_tabs.row(i))); - _mask->activate_almanac(id + i, i, TDate(TODAY)); + pagenames.add(configfile.get("Descr","Main",item)); + _filters.add(configfile.get("Filter","Main",item)); + _mask->activate_almanac(id + item, item, TDate(TODAY)); + item++; } - _mask->set_caption(pagenames); - _mask->disable_page(items); + if (item>0) + { + _mask->set_caption(pagenames); + _mask->disable_page(item); + } } void TImmissioneDocumenti_app::init_flags() { + int filters; int items; TDate currdate; TDate currstart; TString filter; - filter << "ANNO==\"" << _year << "\""; + filters = _filters.items(); - TRelation relation(LF_DOC); - - TSorted_cursor cursor(&relation, "ANNO", filter); - - items =cursor.items(); - - for (cursor=0;cursor.pos()i) + ((TBit_array&)_flags[i]).reset(); + else + _flags.add(new TBit_array(366),i); + + for (cursor=0;cursor.pos()run() == K_ENTER) { - TDate selday = _mask->selected_day(); - int currpage = _mask->curr_page(); - - // _mask->open_inner_sheet(selday,_filters.row(currpage)); + TDate selday = _mask->last_selected_day(); + int currpage = _mask->last_selected_page(); + _mask->open_inner_sheet(selday,_filters.row(currpage)); } } @@ -110,9 +123,9 @@ void TImmissioneDocumenti_app::change_year(int newyear, bool init_flg) if (init_flg) init_flags(); } -bool TImmissioneDocumenti_app::has_documents(TDate& day) +bool TImmissioneDocumenti_app::has_documents(int currpage, TDate& day) { - return ((_flags)[day-_newyearsday]); + return (((TBit_array&)_flags[currpage])[day-_newyearsday]); } /////////////////////////////////////////////////////////// @@ -139,14 +152,18 @@ void TImmissioneDocumenti_mask::open_inner_sheet(TDate date, TString doctype) "ANNO|CODNUM|TIPODOC|NUMDOCRIF|STATO|DATADOCRIF|NDOC|20->RAGSOC", TR("Selezione documenti"), HR("Anno|Num.|Tipo|Docum.Rif.|Stato|Data@10|Documento|Ragione Sociale@50"), - 0x10||0x02||0x04); + 0x02|0x04); exitval = sheet.run(); switch(exitval) { case K_ENTER: + call_ve0(exitval, relation, date, doctype); + break; case K_DEL: + call_ve0(exitval, relation, date, doctype); + break; case K_INS: call_ve0(exitval, relation, date, doctype); break; @@ -169,31 +186,30 @@ void TImmissioneDocumenti_mask::call_ve0(int exitval, TRelation& relation, TDate switch(exitval) { case K_ENTER: - configfile.set("Action", "Modify", "main"); - configfile.set("CODNUM", doctype, "33"); + configfile.set("Action", "Modify", "Transaction"); configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33"); break; case K_DEL: - configfile.set("Action", "Delete", "main"); - configfile.set("CODNUM", doctype, "33"); + configfile.set("Action", "Delete", "Transaction"); configfile.set("NDOC", relation.lfile().get(DOC_NDOC), "33"); break; case K_INS: - configfile.set("Action", "Insert", "main"); - configfile.set("NDOC", date.string(), "33"); + configfile.set("Action", "Insert", "Transaction"); + configfile.set("DATADOC", date.string(), "33"); break; default: break; } + configfile.set("Mode", "A", "Transaction"); configfile.set("PROVV", "D", "33"); - configfile.set("ANNO", curr_almanac().selected_year(), "33"); + configfile.set("ANNO", last_selected_day().year(), "33"); configfile.set("CODNUM", doctype, "33"); } TString commandline; - commandline.format("ve0 -0 /i%s",tempfile); + commandline.format("ve0 -0 /i%s",(const char*)tempfile); TExternal_app ve(commandline); ve.run(); @@ -208,9 +224,9 @@ void TImmissioneDocumenti_mask::change_year(int newyear) immissione_documenti_app().change_year(newyear); } -bool TImmissioneDocumenti_mask::is_date_void(TDate& cdate) +bool TImmissioneDocumenti_mask::is_date_void(int currpage, TDate& cdate) { - return !(immissione_documenti_app().has_documents(cdate)); + return !(immissione_documenti_app().has_documents(currpage, cdate)); } /////////////////////////////////////////////////////////// diff --git a/ci/ci0400.h b/ci/ci0400.h index da124dc34..964383cff 100755 --- a/ci/ci0400.h +++ b/ci/ci0400.h @@ -11,7 +11,7 @@ protected: public: // ereditato da TAlmanac_mask - virtual bool is_date_void(TDate& cdate); + virtual bool is_date_void(int currpage, TDate& cdate); virtual void change_year(int newyear); public: @@ -38,9 +38,8 @@ class TImmissioneDocumenti_app: public TSkeleton_application private: TImmissioneDocumenti_mask* _mask; - TString_array _tabs; // titoli dei tabs TString_array _filters; // filtri tipodoc per ogni tab - TBit_array _flags; // flag di presenza dei documenti + TArray _flags; // 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 TDate _newyearsday; // capodanno dell'anno corrente, per uso interno int _year; // anno corrente @@ -55,11 +54,11 @@ protected: virtual bool destroy(void) ; public: - bool has_documents(TDate& day); // passata come funzione alla maschera + bool has_documents(int currpage, TDate& day); // passata come funzione alla maschera void change_year(int newyear, bool init_flg = true); // passata come funzione alla maschera public: - TImmissioneDocumenti_app() : _flags(366) { change_year(TDate(TODAY).year(), false); } + TImmissioneDocumenti_app() { change_year(TDate(TODAY).year(), false); } virtual ~TImmissioneDocumenti_app() {} }; diff --git a/ci/ci0400.ini b/ci/ci0400.ini index e2af7c52e..02d492b20 100755 --- a/ci/ci0400.ini +++ b/ci/ci0400.ini @@ -1,5 +1,6 @@ -[Fatture] -Filtro = F01 +[Main] +Filter(0) = F01 +Filter(1) = B01 +Descr(0) = Fatture +Descr(1) = Bolle -[Bolle] -Filtro = B01 \ No newline at end of file diff --git a/ci/cilib.cpp b/ci/cilib.cpp index 2eca26393..a22b76194 100755 --- a/ci/cilib.cpp +++ b/ci/cilib.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -91,13 +92,13 @@ void TAlmanac_mask::activate_almanac(const short id, int page, TDate& sdate) return; } - bool TAlmanac_mask::is_date_void(TDate& cdate) + bool TAlmanac_mask::is_date_void(int currpage, TDate& cdate) { return TRUE; } TAlmanac_mask::TAlmanac_mask(const char * name) - : TAutomask(), _activepages(0) + : TAutomask(), _activepages(0), _lastselectedday(TODAY), _lastselectedpage(1) { read_mask(name, 0, -1); set_handlers(); @@ -113,9 +114,9 @@ TField_window* TAlmanac_field::create_window(int x, int y, int dx, int dy, WINDO return new TAlmanac_window(x, y, dx, dy, parent, this); } -bool TAlmanac_field::is_date_void(TDate& cdate) +bool TAlmanac_field::is_date_void(int currpage, TDate& cdate) { - return ((TAlmanac_mask &)mask()).is_date_void(cdate); + return ((TAlmanac_mask &)mask()).is_date_void(currpage, cdate); } void TAlmanac_field::set_selected_day(int nday) @@ -173,11 +174,13 @@ void TAlmanac_window::update() int pad; int row; int fh; + int cpage; TAlmanac_field & o = (TAlmanac_field&)owner(); TField_window::update(); cdate = o.selected_date(); cdate.set_day(1); + cpage = o.mask().curr_page(); rct_w = ((rct.right - rct.left) / 9); rct_h = ((rct.bottom - rct.top) / 9); @@ -185,7 +188,7 @@ void TAlmanac_window::update() row = 3; set_font("Verdana", XVT_FS_BOLD); - set_color(COLOR_BLACK, COLOR_WHITE); + set_color(NORMAL_COLOR, NORMAL_BACK_COLOR); fh = 2 + xvt_dwin_get_font_size_mapped(win()); if (o.show_month_name()) @@ -198,24 +201,24 @@ void TAlmanac_window::update() for (int i=1;i<=7;i++) { - str.format("%c", itow(i)[0]); + str.format("%.3s", itow(i)); rct_l = rct.left + rct_w*i; rct_t = rct.top + rct_h*2; xvt_dwin_draw_text(win(), rct_l + pad + 2, fh + rct_t + pad + 2, str, -1); } + cdate--; - while (!cdate.is_end_month()) + do { - if (o.is_date_void(cdate)) - col_b=COLOR_WHITE; - else - col_b=COLOR_LTGRAY; + if ((++cdate).wday()==1) row++; - if (o.is_selected(cdate.day())) - col_f=COLOR_RED; + if (o.is_date_void(cpage, cdate)) + col_b=NORMAL_BACK_COLOR; else - col_f=COLOR_GRAY; + col_b=REQUIRED_BACK_COLOR; + + col_f=NORMAL_COLOR; set_pen(col_f); set_brush(col_b); @@ -231,11 +234,17 @@ void TAlmanac_window::update() rcttd.right = rct_l + rct_w - pad; xvt_dwin_draw_rect(win(), &rcttd); + + if (o.is_selected(cdate.day())) + { + set_pen(FOCUS_COLOR,1); + rcttd.top++; rcttd.left++; rcttd.bottom--; rcttd.right--; + xvt_dwin_draw_rect(win(), &rcttd); + } + xvt_dwin_draw_text(win(), rct_l + pad + 2, fh + rct_t + pad + 2, str, -1); - - if ((++cdate).wday()==1) row++; } - + while (!cdate.is_end_month()); } bool TAlmanac_window::on_key(KEY key) @@ -259,6 +268,9 @@ bool TAlmanac_window::on_key(KEY key) break; case K_DOWN: o.move_selected_day(+7); + break; + case K_ENTER: + ((TAlmanac_mask&)o.mask()).exit_mask(); break; default: return TField_window::on_key(key); @@ -267,8 +279,10 @@ bool TAlmanac_window::on_key(KEY key) if(smonth!=o.selected_month()) o.mask().set(F_CHANGEMONTH, o.selected_month(), true); if(syear!=o.selected_year()) + { o.mask().set(F_CHANGEYEAR, o.selected_year(), true); - + ((TAlmanac_mask&)o.mask()).set_year(o.selected_year()); + } return true; } @@ -297,7 +311,7 @@ void TAlmanac_window::handler(WINDOW win, EVENT* ep) delta = 7*pnt_r + pnt_c - (7*(3+cdate.week()-fdate.week()) + cdate.wday()); o.move_selected_day(delta); - if (ep->type==E_MOUSE_DBL) o.mask().stop_run(K_ENTER); + if (ep->type==E_MOUSE_DBL) ((TAlmanac_mask&)o.mask()).exit_mask(); } break; default: diff --git a/ci/cilib.h b/ci/cilib.h index e3e31e571..59bbc9cce 100755 --- a/ci/cilib.h +++ b/ci/cilib.h @@ -78,7 +78,7 @@ public: // @access Public Member public: - bool is_date_void(TDate& cdate); + bool is_date_void(int currpage, TDate& cdate); // @access Public Member public: @@ -137,6 +137,11 @@ class TAlmanac_mask : public TAutomask short _almanacs[MAX_PAGES]; // @cmember:(INTERNAL) Numero di pagine attive int _activepages; + // @cmember:(INTERNAL) Giorno selezionato prima dell'uscita della maschera + TDate _lastselectedday; + // @cmember:(INTERNAL) Pagina selezionata prima dell'uscita della maschera + int _lastselectedpage; + // @access Protected Member protected: @@ -159,15 +164,21 @@ public: 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(); } + // @cmember Gestione calendari: Ritorna l'ultimo giorno selezionato + const TDate& last_selected_day() const { return _lastselectedday; } + // @cmember Gestione calendari: Ritorna l'ultima pagina selezionato + const int last_selected_page() const { return _lastselectedpage; } // @cmember Gestione eventi calendario: Controlla la presenza di documenti nella data attiva - virtual bool is_date_void(TDate& cdate); + virtual bool is_date_void(int currpage, TDate& cdate); // @cmember Gestione eventi calendario: Controlla la presenza di documenti nella data attiva virtual void change_year(int newyear); + // @cmember Gestione selezione: Setta l'ultima selezione ed esce dalla maschera + void exit_mask() { _lastselectedday = selected_day(); _lastselectedpage = curr_page(); stop_run(K_ENTER); } // @cmember Costruttore TAlmanac_mask(const char * name); // @cmember Distruttore - ~TAlmanac_mask() {} + ~TAlmanac_mask() { } }; #endif