diff --git a/src/ve/ve5100.cpp b/src/ve/ve5100.cpp index c1b6dd229..5de1700fd 100755 --- a/src/ve/ve5100.cpp +++ b/src/ve/ve5100.cpp @@ -19,10 +19,12 @@ class TDeletedoc_app : public TSkeleton_application TString _desc, _last_std; TString16 _num; int _anno; - char _unit; + char _unit; + TString _dirdest; TFilename _tmp_dir; TIsamtempfile *_tdoc,*_trdoc; - + bool _floppy; + protected: void backup_delete_doc(int op, int who, bool pack_rows); // Backup e cancellazione dei documenti da eliminare @@ -33,7 +35,9 @@ protected: virtual bool destroy(); virtual void main_loop(); -static bool state_handler(TMask& m, KEY k); + static bool state_handler(TMask& m, KEY k); + static void enable_supports(TMask& m, bool enable = true); + static bool op_handler(TMask_field& field, KEY k); public: @@ -49,6 +53,38 @@ bool TDeletedoc_app::state_handler(TMask& m, KEY k) return TRUE; } +void TDeletedoc_app::enable_supports(TMask& m, bool enable) +{ + if(!enable) + { + m.field(F_UNIT).disable(); + m.field(F_DESTDIR).disable(); + } + else + { + if(m.get(F_SALVA) == "F") + { + m.field(F_UNIT).enable(); + m.field(F_DESTDIR).disable(); + } + else + { + m.field(F_UNIT).disable(); + m.field(F_DESTDIR).enable(); + } + } +} + +bool TDeletedoc_app::op_handler(TMask_field& field, KEY k) +{ + TMask& m = field.mask(); + if (m.get_int(F_OPERAZIONE) == 1) + enable_supports(m, false); + else + enable_supports(m); + return true; +} + void TDeletedoc_app::backup_delete_doc(int op, int who, bool pack_rows) { @@ -176,7 +212,10 @@ void TDeletedoc_app::backup_delete_doc(int op, int who, bool pack_rows) movmag.close(); rmovmag.close(); const char * dir = &_tmp_dir[1]; delete_tmp_files(FALSE); //Close tmp files only - rt = _arc.backup(dir,_unit,_desc, FALSE);// Backup dei documenti da eliminare, prefix unnecessary + if(_floppy) + rt = _arc.backup(dir, _unit, _desc, FALSE); // Backup dei documenti da eliminare, prefix unnecessary + else + rt = _arc.backup(dir, _dirdest, _desc, FALSE); // Backup dei documenti da eliminare, prefix unnecessary create_tmp_files(FALSE); // Reopen tmp files. doc.open(_excllock); rdoc.open(); clifo.open(); cfven.open(); tab.open(); occas.open(); @@ -251,7 +290,12 @@ void TDeletedoc_app::restore_doc() return ; } const char* dir =& _tmp_dir[1]; // Cut out % sign - if (_arc.restore(dir,_unit,FALSE, FALSE)) + bool ok; + if(_floppy) + ok = _arc.restore(dir, _unit, FALSE, FALSE); + else + ok = _arc.restore(dir, _dirdest, FALSE, FALSE); + if (ok) { create_tmp_files(FALSE); // In realta' ci sono gia' const TRecnotype items = _tdoc->items() + _trdoc->items(); @@ -335,13 +379,17 @@ void TDeletedoc_app::main_loop() { TMask m("ve5100a"); m.set_handler(state_handler); + m.set_handler(F_OPERAZIONE, op_handler); + m.set_handler(F_SALVA, op_handler); m.set(F_STATUS,_last_std); while (m.run() != K_QUIT) { - _unit = m.get(F_UNIT)[0]; + _dirdest = m.get(F_DESTDIR); _desc = m.get(F_DESC); + _unit = m.get(F_UNIT)[0]; + _floppy = m.get(F_SALVA) == "F"; const int scelta = m.get_int(F_OPERAZIONE); const int cosa = m.get_int(F_DOCUMENTI); const bool pack_rows = m.get_bool(F_COMPATTA); diff --git a/src/ve/ve5100a.h b/src/ve/ve5100a.h index 7f27735ef..08de7c48b 100755 --- a/src/ve/ve5100a.h +++ b/src/ve/ve5100a.h @@ -1,11 +1,13 @@ #define F_STATUS 101 #define F_DESC 102 #define F_UNIT 103 -#define F_STADESC 104 -#define F_OPERAZIONE 105 -#define F_DOCUMENTI 106 -#define F_COMPATTA 107 -#define F_ANNO 108 -#define F_CODNUM 109 -#define F_DESNUM 110 +#define F_DESTDIR 104 +#define F_STADESC 105 +#define F_OPERAZIONE 106 +#define F_SALVA 107 +#define F_DOCUMENTI 108 +#define F_COMPATTA 109 +#define F_ANNO 110 +#define F_CODNUM 111 +#define F_DESNUM 112 diff --git a/src/ve/ve5100a.uml b/src/ve/ve5100a.uml index 2bbe48f4a..9f8145929 100755 --- a/src/ve/ve5100a.uml +++ b/src/ve/ve5100a.uml @@ -10,13 +10,13 @@ RADIOBUTTON F_OPERAZIONE 1 34 BEGIN PROMPT 1 1 "Operazione" ITEM "1|Eliminazione" - MESSAGE DISABLE,F_DESC|DISABLE,F_UNIT|ENABLE,F_ANNO|ENABLE,F_CODNUM + MESSAGE DISABLE,F_DESC|ENABLE,F_ANNO|ENABLE,F_CODNUM ITEM "2|Archiviazione" - MESSAGE ENABLE,F_DESC|ENABLE,F_UNIT|ENABLE,F_ANNO|ENABLE,F_CODNUM + MESSAGE ENABLE,F_DESC|ENABLE,F_ANNO|ENABLE,F_CODNUM ITEM "3|Eliminazione e archiviazione" - MESSAGE ENABLE,F_DESC|ENABLE,F_UNIT|ENABLE,F_ANNO|ENABLE,F_CODNUM + MESSAGE ENABLE,F_DESC|ENABLE,F_ANNO|ENABLE,F_CODNUM ITEM "4|Ripristino" - MESSAGE DISABLE,F_DESC|ENABLE,F_UNIT|CLEAR,F_ANNO|CLEAR,F_CODNUM + MESSAGE DISABLE,F_DESC|CLEAR,F_ANNO|CLEAR,F_CODNUM END RADIOBUTTON F_DOCUMENTI 1 24 @@ -30,21 +30,35 @@ BEGIN MESSAGE ENABLE,F_COMPATTA END +RADIOBUTTON F_SALVA 2 24 +BEGIN + PROMPT 1 7 "Salvare su " + ITEM "F|Floppy" + ITEM "D|File " + FLAGS "Z" +END + LIST F_UNIT 2 BEGIN - PROMPT 38 6 "Unita' di backup " + PROMPT 30 9 "Unita' di backup" ITEM "A|A:" ITEM "B|B:" END +STRING F_DESTDIR 250 36 +BEGIN + PROMPT 2 10 "Percorso di backup " + DSELECT +END + STRING F_DESC 50 36 BEGIN - PROMPT 2 7 "Descrizione backup " + PROMPT 2 11 "Descrizione backup " END STRING F_STATUS 1 BEGIN - PROMPT 2 8 "Stato eliminabile " + PROMPT 2 12 "Stato eliminabile " USE %STD INPUT CODTAB F_STATUS DISPLAY "Stato documento" CODTAB @@ -58,25 +72,25 @@ END STRING F_STADESC 32 BEGIN - PROMPT 27 8 "" + PROMPT 27 12 "" FLAGS "D" END BOOELAN F_COMPATTA BEGIN - PROMPT 2 9 "Elimina la righe evase" + PROMPT 2 13 "Elimina la righe evase" END NUMBER F_ANNO 4 BEGIN - PROMPT 2 10 "Esercizio " + PROMPT 2 14 "Esercizio " FIELD ANNO WARNING "Inserire un anno valido" END STRING F_CODNUM 4 BEGIN - PROMPT 2 11 "Numerazione " + PROMPT 2 15 "Numerazione " FIELD CODNUM HELP "Codice numerazione" USE %NUM @@ -92,7 +106,7 @@ END STRING F_DESNUM 50 42 BEGIN - PROMPT 15 12 "" + PROMPT 15 16 "" HELP "Descrizione numerazione" USE %NUM KEY 2 INPUT S0 F_DESNUM