9b5bca12ce
Files correlati : Ricompilazione Demo : [ ] Commento : 0001155: La ricerca file archiviati è rimasta nel look 3.2 Descrizione La ricerca file archiviati è rimasta nel look 3.2 git-svn-id: svn://10.65.10.50/trunk@18355 c028cbd2-c16b-5b4b-a496-9718f37d4682
244 lines
5.4 KiB
C++
Executable File
244 lines
5.4 KiB
C++
Executable File
#include "ba8.h"
|
|
|
|
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <config.h>
|
|
#include <defmask.h>
|
|
#include <msksheet.h>
|
|
#include <prefix.h>
|
|
|
|
#include "ba8600a.h"
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TGoogle_mask
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TGoogle_mask : public TAutomask
|
|
{
|
|
TFilename _base_dir;
|
|
clock_t _next_update;
|
|
|
|
protected:
|
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
|
virtual void on_idle();
|
|
|
|
void query_firm(int anno, long ditta);
|
|
void query_year(int anno);
|
|
void query();
|
|
|
|
public:
|
|
TGoogle_mask(const TFilename& base_dir);
|
|
};
|
|
|
|
void TGoogle_mask::on_idle()
|
|
{
|
|
if (_next_update > 0 && clock() >= _next_update)
|
|
query();
|
|
}
|
|
|
|
bool TGoogle_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
switch (o.dlg())
|
|
{
|
|
case DLG_USER:
|
|
if (e == fe_button)
|
|
{
|
|
const TMask& m = o.mask();
|
|
TFilename name = _base_dir;
|
|
name.add(m.get(102));
|
|
TString8 str; str.format("%05ldA", m.get_int(101));
|
|
name.add(str);
|
|
name.add(m.get(103));
|
|
xvt_sys_goto_url(name, "open");
|
|
}
|
|
break;
|
|
case F_SHEET:
|
|
if (e == se_query_add || e == se_query_del)
|
|
return false;
|
|
break;
|
|
case DLG_ELABORA:
|
|
if (e == fe_button)
|
|
query();
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if (e == fe_modify && jolly ==0)
|
|
_next_update = clock() + 5*CLOCKS_PER_SEC;
|
|
|
|
return true;
|
|
}
|
|
|
|
void TGoogle_mask::query_firm(int anno, long firm)
|
|
{
|
|
const TString& tipodoc = get(F_TIPODOC);
|
|
const long codcf = get_long(F_CLIFO);
|
|
TSheet_field& sheet = sfield(F_SHEET);
|
|
|
|
TFilename name = _base_dir;
|
|
TString8 str;
|
|
str.format("%04d", anno); name.add(str);
|
|
str.format("%05ldA", firm); name.add(str);
|
|
|
|
xvt_fsys_save_dir();
|
|
DIRECTORY dir; xvt_fsys_convert_str_to_dir(name, &dir);
|
|
if (xvt_fsys_set_dir(&dir))
|
|
{
|
|
SLIST files = xvt_fsys_list_files("", "*.*", FALSE);
|
|
for (SLIST_ELT e = xvt_slist_get_first(files); e; e = xvt_slist_get_next(files, e))
|
|
{
|
|
TToken_string file(xvt_slist_get(files, e, NULL), '_');
|
|
if (file.items() < 3)
|
|
continue;
|
|
|
|
if (tipodoc.full() && tipodoc.compare(file.get(1), -1, true) != 0)
|
|
continue;
|
|
|
|
if (codcf > 0 && codcf != file.get_long(3))
|
|
continue;
|
|
|
|
TToken_string& row = sheet.row(-1);
|
|
row.add(firm);
|
|
row.add(anno);
|
|
row.add(file);
|
|
}
|
|
xvt_slist_destroy(files);
|
|
}
|
|
else
|
|
error_box("Ma che cavolo di cartella %s stai guardando Willis?", (const char*) name);
|
|
xvt_fsys_restore_dir();
|
|
}
|
|
|
|
void TGoogle_mask::query_year(int anno)
|
|
{
|
|
const long firm = get_long(F_DITTA);
|
|
if (firm <= 0)
|
|
{
|
|
TFilename name = _base_dir;
|
|
TString8 str; str.format("%04d", anno);
|
|
name.add(str);
|
|
name.add("?????A");
|
|
|
|
SLIST files = xvt_fsys_list_files(DIR_TYPE, name, TRUE);
|
|
for (SLIST_ELT e = xvt_slist_get_first(files); e; e = xvt_slist_get_next(files, e))
|
|
{
|
|
const TFilename name = xvt_slist_get(files, e, NULL);
|
|
const long firm = atol(name.name());
|
|
query_firm(anno, firm);
|
|
}
|
|
xvt_slist_destroy(files);
|
|
}
|
|
else
|
|
query_firm(anno, firm);
|
|
}
|
|
|
|
void TGoogle_mask::query()
|
|
{
|
|
_next_update = 0;
|
|
|
|
TWait_cursor hourglass;
|
|
|
|
TSheet_field& sheet = sfield(F_SHEET);
|
|
sheet.destroy();
|
|
|
|
int anno = get_int(F_ANNO);
|
|
if (anno < 1000)
|
|
{
|
|
TFilename name = _base_dir;
|
|
name.add("????");
|
|
SLIST files = xvt_fsys_list_files(DIR_TYPE, name, TRUE);
|
|
for (SLIST_ELT e = xvt_slist_get_first(files); e; e = xvt_slist_get_next(files, e))
|
|
{
|
|
const TFilename dirname = xvt_slist_get(files, e, NULL);
|
|
anno = atoi(dirname.right(4));
|
|
if (anno >= 1000)
|
|
query_year(anno);
|
|
}
|
|
xvt_slist_destroy(files);
|
|
}
|
|
else
|
|
query_year(anno);
|
|
|
|
sheet.force_update();
|
|
_next_update = 0;
|
|
}
|
|
|
|
TGoogle_mask::TGoogle_mask(const TFilename& base_dir)
|
|
: _base_dir(base_dir), _next_update(0)
|
|
{
|
|
TSheet_field::set_line_number_width(7);
|
|
read_mask("ba8600a", 0, 1);
|
|
set_handlers();
|
|
|
|
set(F_STUDIO, firm2dir(-1));
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////
|
|
// TGoogle_app
|
|
///////////////////////////////////////////////////////////
|
|
|
|
class TGoogle_app : public TSkeleton_application
|
|
{
|
|
TGoogle_mask* _mask;
|
|
|
|
public:
|
|
virtual bool create();
|
|
virtual void main_loop();
|
|
virtual bool destroy();
|
|
};
|
|
|
|
bool TGoogle_app::create()
|
|
{
|
|
TConfig ini("servers/servers.ini", "Spotlite");
|
|
TFilename name = ini.get("Data");
|
|
bool ok = name.exist();
|
|
if (!ok)
|
|
{
|
|
name = firm2dir(-1);
|
|
name.add("spotlite");
|
|
TString msg;
|
|
msg << TR("Il server di archiviazione non e' configurato")
|
|
<< ":\n" << TR("si desidera usare la seguente cartella?")
|
|
<< '\n' << name;
|
|
const KEY ync = yesnocancel_box(msg);
|
|
if (ync != K_ESC)
|
|
{
|
|
ok = ync == K_YES;
|
|
if (!ok)
|
|
{
|
|
DIRECTORY dir; xvt_fsys_convert_str_to_dir(name, &dir);
|
|
ok = xvt_dm_post_dir_sel(&dir) == FL_OK;
|
|
if (ok)
|
|
xvt_fsys_convert_dir_to_str(&dir, name.get_buffer(), name.size());
|
|
}
|
|
if (ok)
|
|
{
|
|
ok = xvt_fsys_mkdir(name) != 0;
|
|
if (ok)
|
|
ini.set("Data", name);
|
|
}
|
|
}
|
|
}
|
|
|
|
_mask = ok ? new TGoogle_mask(name) : NULL;
|
|
|
|
return ok && TSkeleton_application::create();
|
|
}
|
|
|
|
void TGoogle_app::main_loop()
|
|
{
|
|
_mask->run();
|
|
}
|
|
|
|
bool TGoogle_app::destroy()
|
|
{
|
|
delete _mask;
|
|
return TSkeleton_application::destroy();
|
|
}
|
|
|
|
int ba8600(int argc, char* argv[])
|
|
{
|
|
TGoogle_app app;
|
|
app.run(argc, argv, TR("Ricerca documenti archiviati"));
|
|
return 0;
|
|
} |