/**********************************************************************
 *     EPSCAN, an EPSON ES-1200 scanner driver     
 *     Adam P. Jenkins <ajenkins@cs.umass.edu>
 *     
 *     This program is free software; you can redistribute it and/or
 *     modify it under the terms of the GNU General Public License
 *     as published by the Free Software Foundation; either version 2
 *     of the License, or (at your option) any later version.
 *     
 *     This program is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU General Public License for more details.
 *     
 *     You should have received a copy of the GNU General Public License
 *     along with this program; if not, write to the Free Software
 *     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 **********************************************************************/

#include "Scanner.h"
#include "ProgressReport.h"

ProgressReport::ProgressReport(Scanner *dev, QWidget *parent, const char *name)
: QProgressDialog("Scanning...", "Abort Scan", dev->scanSize(),
		  parent, name, TRUE)
{
  Dev = dev;
}

bool
ProgressReport::exec()
{
  int bytesRead = 0, res;
  bool cancel = false;
  setProgress(0);
  do {
    res = Dev->scanBlock(cancel);
    if (res < 0) {
      warning("Scanner error: %s", Dev->strError());
      setProgress(Dev->scanSize());
    } else {
      bytesRead += res;
      setProgress(bytesRead);
      if (wasCancelled())
	// user clicked cancel
	cancel = true;
    }
  } while (res > 0);

  setProgress(Dev->scanSize());
  return res == 0 && cancel == false;
}


