campo-sirio/ba/ba2200.cpp
alex 649a9819c8 Patch level : xx.282
Files correlati     :
Ricompilazione Demo : [ ]
Commento            : Riportata la versione 01.05 patch 282


git-svn-id: svn://10.65.10.50/trunk@8058 c028cbd2-c16b-5b4b-a496-9718f37d4682
1999-04-16 12:02:04 +00:00

131 lines
2.6 KiB
C++
Executable File

#include <applicat.h>
#include <archives.h>
#include <isam.h>
#include <mask.h>
#include <prefix.h>
#include "ba2200.h"
///////////////////////////////////////////////////////////
// Archiving application
///////////////////////////////////////////////////////////
class TArchive_app : public TSkeleton_application
{
TArchive _arc;
protected:
virtual bool create();
virtual void main_loop();
static bool test_firm(TMask_field& f, KEY k);
KEY query(long& firm, char& floppy, TString& desc, bool& temp, bool& zip) const;
public:
void stop_job();
TArchive_app() {}
virtual ~TArchive_app() {}
};
bool TArchive_app::create()
{
bool ok = TRUE;
TIsamfile utenti(LF_USER);
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)
ok = TSkeleton_application::create();
return ok;
}
bool TArchive_app::test_firm(TMask_field& f, KEY k)
{
if (k == K_SPACE)
{
const char* d = f.mask().get(F_CODDITTA);
const long firm = atol(d);
if (firm > 0 && !prefix().exist(firm))
return f.error_box("La ditta %s non esiste.",d);
}
return TRUE;
}
KEY TArchive_app::query(long& firm, char& floppy, TString& desc, bool& temp, bool& zip) const
{
TMask m("ba2200");
m.set_handler(F_SALVA,test_firm);
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);
#if XVT_OS == XVT_OS_WIN
zip = m.get_bool(F_ZIP);
#else
zip = TRUE;
#endif
}
return k;
}
void TArchive_app::main_loop()
{
KEY k;
long firm;
char floppy;
TString desc(80);
bool temp;
bool zip;
while ((k = query(firm, floppy, desc, temp, zip)) != K_QUIT)
{
if (k == K_SAVE)
{
if (zip)
_arc.zip(firm, floppy, desc);
#if XVT_OS == XVT_OS_WIN
else
_arc.backup(firm, floppy, desc);
#endif
}
else
{
if (zip)
_arc.unzip(firm, floppy, temp);
#if XVT_OS == XVT_OS_WIN
else
_arc.restore(firm, floppy, temp);
#endif
}
}
}
int ba2200(int argc, char* argv[])
{
TArchive_app a;
a.run(argc, argv, "Archiviazione");
return 0;
}