#include #define XVT_INCL_NATIVE #define STRICT #include #include #include #include #include #include #include #include #include #include #include "ba2200.h" /////////////////////////////////////////////////////////// // Archiving application /////////////////////////////////////////////////////////// class TArchive_app : public TApplication { TArchive _arc; protected: virtual bool create(); virtual bool menu(MENU_TAG); KEY query(long& firm, char& floppy, TString& desc, bool& tmp) const; public: void stop_job(); TArchive_app() {} virtual ~TArchive_app() {} }; bool TArchive_app::create() { TApplication::create(); bool ok = TRUE; TIsamfile utenti(LF_USER, FALSE); utenti.open(_excllock); for (int err = utenti.first(); err == NOERR; err = utenti.next()) { const TString16 u = utenti.get("USERNAME"); if (u != user() && utenti.get_bool("CONNECTED")) { ok = error_box("L'archiviazione non puo' essere effettuata\n" "se ci sono altri utenti collegati: %s", (const char*)u); } } utenti.close(); if (ok) dispatch_e_menu(BAR_ITEM(1)); return ok; } KEY TArchive_app::query(long& firm, char& floppy, TString& desc, bool& temp) const { TMask m("ba2200"); const KEY k = m.run(); if (k != K_QUIT) { if (m.get(F_DATA) == "T") firm = -1; else firm = m.get_long(F_CODDITTA); floppy = m.get(F_FLOPPY)[0]; desc = m.get(F_DESCR); temp = m.get_bool(F_TEMP); } return k; } bool TArchive_app::menu(MENU_TAG) { KEY k; long firm; char floppy; TString80 desc; bool temp; while ((k = query(firm, floppy, desc, temp)) != K_QUIT) { if (k == K_SAVE) _arc.backup(firm, floppy, desc); else _arc.restore(firm, floppy, temp); } return FALSE; } int ba2200(int argc, char* argv[]) { TArchive_app a; a.run(argc, argv, "Archiviazione"); return 0; }