Fax server
git-svn-id: svn://10.65.10.50/trunk@3258 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									4bb131e5cf
								
							
						
					
					
						commit
						620fe209fc
					
				
							
								
								
									
										107
									
								
								ba/bafax.cpp
									
									
									
									
									
								
							
							
						
						
									
										107
									
								
								ba/bafax.cpp
									
									
									
									
									
								
							@ -61,6 +61,8 @@ class TFax_data : public TAssoc_array
 | 
				
			|||||||
{           
 | 
					{           
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  void set(const char* key, const char* value);
 | 
					  void set(const char* key, const char* value);
 | 
				
			||||||
 | 
					  const char* get(const char* key) const;
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  void set_file(const char* file) { set("FILELIST", file); }
 | 
					  void set_file(const char* file) { set("FILELIST", file); }
 | 
				
			||||||
  char* get_char_star(const char* name) const;
 | 
					  char* get_char_star(const char* name) const;
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
@ -85,8 +87,24 @@ void TFax_data::set(const char* key, const char* value)
 | 
				
			|||||||
  add(key, TString(value), TRUE);
 | 
					  add(key, TString(value), TRUE);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const char* TFax_data::get(const char* key) const
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  const TString* s = (const TString*)((TAssoc_array*)this)->objptr(key);
 | 
				
			||||||
 | 
					  return s ? (const char*)*s : "";
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
char* TFax_data::get_char_star(const char* name) const
 | 
					char* TFax_data::get_char_star(const char* name) const
 | 
				
			||||||
{     
 | 
					{     
 | 
				
			||||||
 | 
					  if (stricmp(name, "FULLDESTFAX") == 0)
 | 
				
			||||||
 | 
					  {
 | 
				
			||||||
 | 
					    TString num(24);
 | 
				
			||||||
 | 
					    num << get("DIALING");
 | 
				
			||||||
 | 
					    num << get("PREFIX");
 | 
				
			||||||
 | 
					    num << get("DESTFAX");
 | 
				
			||||||
 | 
					    ((TFax_data*)this)->set(name, num);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const TString* s = (const TString*)((TAssoc_array*)this)->objptr(name);
 | 
					  const TString* s = (const TString*)((TAssoc_array*)this)->objptr(name);
 | 
				
			||||||
  return  s ? (char*)(const char*)*s : "";
 | 
					  return  s ? (char*)(const char*)*s : "";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -262,6 +280,8 @@ public:
 | 
				
			|||||||
  bool set_destination(const TString& tipo, const TString& codice, TFax_data& data) const;
 | 
					  bool set_destination(const TString& tipo, const TString& codice, TFax_data& data) const;
 | 
				
			||||||
  bool push_destination(const TString& tipo, const TString& codice);
 | 
					  bool push_destination(const TString& tipo, const TString& codice);
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  void auto_configure();
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  TDDE_fax();
 | 
					  TDDE_fax();
 | 
				
			||||||
  virtual ~TDDE_fax();
 | 
					  virtual ~TDDE_fax();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
@ -295,11 +315,22 @@ public:
 | 
				
			|||||||
TFax_mask::TFax_mask(TDDE_fax* fax) 
 | 
					TFax_mask::TFax_mask(TDDE_fax* fax) 
 | 
				
			||||||
         : TMask("bafax01"), _fax(fax)
 | 
					         : TMask("bafax01"), _fax(fax)
 | 
				
			||||||
{       
 | 
					{       
 | 
				
			||||||
 | 
					  const char* pippe[] = { "DESTFAX", "FROMFAX", "PREFIX", NULL };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (int i = fields()-1; i >= 0; i--)
 | 
					  for (int i = fields()-1; i >= 0; i--)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    TMask_field& f = fld(i);
 | 
					    TMask_field& f = fld(i);
 | 
				
			||||||
    if (f.in_group(1))
 | 
					    if (f.in_group(1))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
      f.set_handler(code_handler);
 | 
					      f.set_handler(code_handler);
 | 
				
			||||||
 | 
					      const TFieldref* c = f.field();
 | 
				
			||||||
 | 
					      if (c != NULL)
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        for (int p = 0; pippe[p] != NULL; p++)
 | 
				
			||||||
 | 
					          if (c->name() == pippe[p])
 | 
				
			||||||
 | 
					            f.allow_pipe();
 | 
				
			||||||
 | 
					      }  
 | 
				
			||||||
 | 
					    }  
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
      if (f.in_group(2))
 | 
					      if (f.in_group(2))
 | 
				
			||||||
        f.set_handler(button_handler);
 | 
					        f.set_handler(button_handler);
 | 
				
			||||||
@ -479,6 +510,7 @@ bool TLog_mask::log_notify(TSheet_field& s, int, KEY k)
 | 
				
			|||||||
      const char* strid = s.row(i).get(0);
 | 
					      const char* strid = s.row(i).get(0);
 | 
				
			||||||
      unsigned long id; sscanf(strid, "%lu", &id);
 | 
					      unsigned long id; sscanf(strid, "%lu", &id);
 | 
				
			||||||
      m._fax->log_delete(log, id);
 | 
					      m._fax->log_delete(log, id);
 | 
				
			||||||
 | 
					      do_events();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    return FALSE;
 | 
					    return FALSE;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -569,24 +601,23 @@ TDDE_fax::TDDE_fax()
 | 
				
			|||||||
        : _pappinfo(NULL), _log_mask(NULL), _fax_mask(NULL),
 | 
					        : _pappinfo(NULL), _log_mask(NULL), _fax_mask(NULL),
 | 
				
			||||||
          _close_when_idle(FALSE)
 | 
					          _close_when_idle(FALSE)
 | 
				
			||||||
{               
 | 
					{               
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
  const bool already = initiate(get_app_name(), "");  
 | 
					  const bool already = initiate(get_app_name(), "");  
 | 
				
			||||||
  if (already)
 | 
					  if (already)
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    terminate();
 | 
					    terminate();
 | 
				
			||||||
    xvt_statbar_set("C'e' gia' un server in esecuzione");
 | 
					    xvt_statbar_set("C'e' gia' un server in esecuzione");
 | 
				
			||||||
    beep();
 | 
					    beep();
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else  
 | 
					*/
 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
  _pappinfo = FaxRegisterApp(get_app_name(), hwnd());
 | 
					  _pappinfo = FaxRegisterApp(get_app_name(), hwnd());
 | 
				
			||||||
  if (_pappinfo)
 | 
					  if (_pappinfo)
 | 
				
			||||||
  {    
 | 
					  {    
 | 
				
			||||||
      DragAcceptFiles((HWND)hwnd(), TRUE);        // Attiva Drag'n'drop
 | 
					 | 
				
			||||||
    
 | 
					 | 
				
			||||||
      FaxSubscribe(_pappinfo, SUBSCRIBE_LOG_ALL); // Connettiti a FAxman
 | 
					 | 
				
			||||||
      update_all_logs();
 | 
					 | 
				
			||||||
      
 | 
					 | 
				
			||||||
    start_server();                             // Inizia DDE server
 | 
					    start_server();                             // Inizia DDE server
 | 
				
			||||||
 | 
					    FaxSubscribe(_pappinfo, SUBSCRIBE_LOG_ALL); // Connettiti a Faxman
 | 
				
			||||||
 | 
					    update_all_logs();                          // Aggiorna tutte le code
 | 
				
			||||||
 | 
					    DragAcceptFiles((HWND)hwnd(), TRUE);        // Attiva Drag'n'drop
 | 
				
			||||||
  }  
 | 
					  }  
 | 
				
			||||||
  else
 | 
					  else
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
@ -594,7 +625,6 @@ TDDE_fax::TDDE_fax()
 | 
				
			|||||||
    beep();
 | 
					    beep();
 | 
				
			||||||
  }  
 | 
					  }  
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
TDDE_fax::~TDDE_fax()
 | 
					TDDE_fax::~TDDE_fax()
 | 
				
			||||||
{ 
 | 
					{ 
 | 
				
			||||||
@ -669,6 +699,8 @@ bool TDDE_fax::do_execute(word id, const TString& cmd)
 | 
				
			|||||||
  return ok;
 | 
					  return ok;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Genera il nome di un file temporaneo e gli cambia l'estensione:
 | 
				
			||||||
 | 
					// se esiste gia' ripete il ciclo.
 | 
				
			||||||
void TDDE_fax::choose_temp_name(TFilename& name) const
 | 
					void TDDE_fax::choose_temp_name(TFilename& name) const
 | 
				
			||||||
{                 
 | 
					{                 
 | 
				
			||||||
  do 
 | 
					  do 
 | 
				
			||||||
@ -816,9 +848,6 @@ bool TDDE_fax::send_next_fax()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  tw.maximize();
 | 
					  tw.maximize();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (_port.first_one() < 0)
 | 
					 | 
				
			||||||
    warning_box("Non c'e nessun modem-fax collegato");
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  CHECK(_fax_mask == NULL, "Double fax mask");
 | 
					  CHECK(_fax_mask == NULL, "Double fax mask");
 | 
				
			||||||
  _fax_mask = new TFax_mask(this);
 | 
					  _fax_mask = new TFax_mask(this);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -835,7 +864,7 @@ bool TDDE_fax::send_next_fax()
 | 
				
			|||||||
      PSEND_FAX sf = &_send_fax; 
 | 
					      PSEND_FAX sf = &_send_fax; 
 | 
				
			||||||
      FaxInitSendStruct(_pappinfo, sf);
 | 
					      FaxInitSendStruct(_pappinfo, sf);
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
      sf->szDestFax     = data.get_char_star("DESTFAX");
 | 
					      sf->szDestFax     = data.get_char_star("FULLDESTFAX");
 | 
				
			||||||
      sf->szDestName    = data.get_char_star("DESTNAME");
 | 
					      sf->szDestName    = data.get_char_star("DESTNAME");
 | 
				
			||||||
      sf->szToCompany   = data.get_char_star("DESTFIRM");
 | 
					      sf->szToCompany   = data.get_char_star("DESTFIRM");
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
@ -954,29 +983,31 @@ void TDDE_fax::update_all_logs()
 | 
				
			|||||||
  _failed.destroy();
 | 
					  _failed.destroy();
 | 
				
			||||||
  _complete.destroy();
 | 
					  _complete.destroy();
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_PENDING) < MAXITERATORS) {
 | 
					  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_PENDING) < MAXITERATORS) 
 | 
				
			||||||
    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT) {
 | 
					  {
 | 
				
			||||||
 | 
					    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT)
 | 
				
			||||||
      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
					      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_SENDING) < MAXITERATORS) {
 | 
					  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_SENDING) < MAXITERATORS) 
 | 
				
			||||||
    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT) {
 | 
					  {
 | 
				
			||||||
 | 
					    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT)
 | 
				
			||||||
      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
					      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_COMPLETE) < MAXITERATORS) {
 | 
					  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_COMPLETE) < MAXITERATORS) 
 | 
				
			||||||
    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT) {
 | 
					  {
 | 
				
			||||||
 | 
					    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT)
 | 
				
			||||||
      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
					      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_FAILED) < MAXITERATORS) {
 | 
					  if (FaxLogInit(_pappinfo, SUBSCRIBE_LOG_FAILED) < MAXITERATORS) 
 | 
				
			||||||
    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT) {
 | 
					  {
 | 
				
			||||||
 | 
					    while (FaxLogNext(_pappinfo, &tmpsf) == LOGERR_CONTINUEIT)
 | 
				
			||||||
      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
					      do_custom_message(WM_FAXMSG, FAXLOGADD, (LPARAM)&tmpsf);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  }
 | 
					  
 | 
				
			||||||
 | 
					  FaxEnumDevices(_pappinfo);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void TDDE_fax::update_log(int log)
 | 
					void TDDE_fax::update_log(int log)
 | 
				
			||||||
@ -997,6 +1028,13 @@ void TDDE_fax::log_delete(int log, unsigned long id)
 | 
				
			|||||||
    FaxLogDelete(_pappinfo, id, log);
 | 
					    FaxLogDelete(_pappinfo, id, log);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void TDDE_fax::auto_configure()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  const int err = FaxAddDevice(_pappinfo, 0);
 | 
				
			||||||
 | 
					  if (err == 0)
 | 
				
			||||||
 | 
					    error_box("Impossibile trovare il server Faxman");
 | 
				
			||||||
 | 
					}  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
bool TDDE_fax::run_mask()
 | 
					bool TDDE_fax::run_mask()
 | 
				
			||||||
{   
 | 
					{   
 | 
				
			||||||
  const bool ok = _log_mask == NULL;
 | 
					  const bool ok = _log_mask == NULL;
 | 
				
			||||||
@ -1178,10 +1216,12 @@ bool TFax_server::create()
 | 
				
			|||||||
  const bool ok = _fax->ok();
 | 
					  const bool ok = _fax->ok();
 | 
				
			||||||
  if (ok) 
 | 
					  if (ok) 
 | 
				
			||||||
  {              
 | 
					  {              
 | 
				
			||||||
    TTemp_window w(TASK_WIN);
 | 
					    bool show_status = FALSE;
 | 
				
			||||||
    w.iconize();
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if (argc() > 3)
 | 
					    if (argc() == 2)
 | 
				
			||||||
 | 
					      show_status = stricmp(argv(1), "-S") == 0;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (argc() > 2)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
      const TString tipo   = argv(1); 
 | 
					      const TString tipo   = argv(1); 
 | 
				
			||||||
      const TString codice = argv(2);
 | 
					      const TString codice = argv(2);
 | 
				
			||||||
@ -1201,6 +1241,16 @@ bool TFax_server::create()
 | 
				
			|||||||
        msg = mb.next_s(topic);  
 | 
					        msg = mb.next_s(topic);  
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }  
 | 
					    }  
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    if (show_status)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      dispatch_e_menu(MENU_ITEM(1));
 | 
				
			||||||
 | 
					    }  
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      TTemp_window w(TASK_WIN);
 | 
				
			||||||
 | 
					      w.iconize();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  else 
 | 
					  else 
 | 
				
			||||||
    destroy();      // Non verrebbe mai chiamata
 | 
					    destroy();      // Non verrebbe mai chiamata
 | 
				
			||||||
@ -1226,6 +1276,9 @@ bool TFax_server::menu(MENU_TAG mt)
 | 
				
			|||||||
    case MENU_ITEM(1):
 | 
					    case MENU_ITEM(1):
 | 
				
			||||||
      _fax->run_mask(); 
 | 
					      _fax->run_mask(); 
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
 | 
					    case MENU_ITEM(2):
 | 
				
			||||||
 | 
					      _fax->auto_configure();
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
    default:
 | 
					    default:
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    }  
 | 
					    }  
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,13 @@
 | 
				
			|||||||
 | 
					#define APPNAME EASYFAX
 | 
				
			||||||
 | 
					#define QAPPNAME "EASYFAX"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <default.url>
 | 
					#include <default.url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MENU TASK_MENUBAR
 | 
					MENU TASK_MENUBAR
 | 
				
			||||||
  SUBMENU MENU_FILE   "~File"
 | 
					  SUBMENU MENU_FILE   "~File"
 | 
				
			||||||
  ITEM MENU_ITEM(1)  "~Stato"
 | 
					  SUBMENU BAR_ITEM(1) "~Modem/Fax"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					MENU BAR_ITEM(1)
 | 
				
			||||||
 | 
					  ITEM MENU_ITEM(1) "~Stato" 
 | 
				
			||||||
 | 
					  ITEM MENU_ITEM(2) "~Azzera"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user