Public Types | Public Slots | Signals | Public Member Functions | Private Member Functions | Private Attributes

QScan345Controller Class Reference

#include <qscan345controller.h>

Inheritance diagram for QScan345Controller:
Inheritance graph
[legend]

List of all members.

Public Types

typedef Command inherited

Public Slots

void initialize ()
void erase ()
void scan ()
void changeMode2300 ()
void changeMode2000 ()
void changeMode1600 ()
void changeMode1200 ()
void changeMode3450 ()
void changeMode3000 ()
void changeMode2400 ()
void changeMode1800 ()
void restart_scanner ()
void change_scanner_number (int n)
int poll_status ()
void setWorkingDirectory (QString d)
void setFileRoot (QString root)
void execute_command (QString cmd)
void log_spy_message (QString msg)

Signals

void scan_completed ()
void scanner_number_changed (int)
void scan_mode_changed (int)

Public Member Functions

 QScan345Controller (QScan345MainWindow *win, QScan345Server *srv, QObject *parent=0)
 ~QScan345Controller ()
void updateScannerMenu ()

Private Member Functions

void changeMode (int n)
void updateActions ()
void check_scanner_number ()

Private Attributes

QMutex m_Mutex
QTimer * m_Timer
QScan345MainWindowm_MainWindow
QScan345Serverm_Server
QList< int > m_SerialNumbers

Detailed Description

Definition at line 12 of file qscan345controller.h.


Member Typedef Documentation

Reimplemented from Command.

Definition at line 18 of file qscan345controller.h.


Constructor & Destructor Documentation

QScan345Controller::QScan345Controller ( QScan345MainWindow win,
QScan345Server srv,
QObject *  parent = 0 
)

Definition at line 22 of file qscan345controller.cpp.

References timeout.

  : inherited(parent),
    m_MainWindow(win),
    m_Server(srv)
{
  openlog("qscan354", 0, LOG_LOCAL0);
  log_spy_message("starting");

  m_MainWindow -> setScanController(this);

  connect (this,         SIGNAL(scanner_number_changed(int)),
           m_MainWindow, SLOT(update_scanner_menu()));

  check_scanner_number();

  setWorkingDirectory(".");
  setFileRoot("junk");
  
  m_Timer = new QTimer(this);

  connect(m_Timer, SIGNAL(timeout()), this, SLOT(poll_status()));

  connect (m_MainWindow->actionInitialize, SIGNAL(triggered()), this, SLOT(initialize()));
  connect (m_MainWindow->actionErase, SIGNAL(triggered()), this, SLOT(erase()));
  connect (m_MainWindow->actionScan, SIGNAL(triggered()), this, SLOT(scan()));
  connect (m_MainWindow->actionMode2300, SIGNAL(triggered()), this, SLOT(changeMode2300()));
  connect (m_MainWindow->actionMode2000, SIGNAL(triggered()), this, SLOT(changeMode2000()));
  connect (m_MainWindow->actionMode1600, SIGNAL(triggered()), this, SLOT(changeMode1600()));
  connect (m_MainWindow->actionMode1200, SIGNAL(triggered()), this, SLOT(changeMode1200()));
  connect (m_MainWindow->actionMode3450, SIGNAL(triggered()), this, SLOT(changeMode3450()));
  connect (m_MainWindow->actionMode3000, SIGNAL(triggered()), this, SLOT(changeMode3000()));
  connect (m_MainWindow->actionMode2400, SIGNAL(triggered()), this, SLOT(changeMode2400()));
  connect (m_MainWindow->actionMode1800, SIGNAL(triggered()), this, SLOT(changeMode1800()));

  connect (this, SIGNAL(print_message(QString)), 
           m_MainWindow, SLOT(display_message(QString)));

  connect (this, SIGNAL(spy_message(QString)), 
           m_MainWindow, SLOT(display_spy_message(QString)));

  connect (this, SIGNAL(spy_message(QString)),
           this, SLOT(log_spy_message(QString)));

  connect (m_Server, SIGNAL(execute_command(QString)),
           this,     SLOT(execute_command(QString)));

  connect (this,     SIGNAL(scan_finished()),
           m_Server, SLOT(scan_finished()));

  connect (this,     SIGNAL(erase_finished()),
           m_Server, SLOT(erase_finished()));

  connect (m_MainWindow, SIGNAL(scanner_changed()),
           this,         SLOT(restart_scanner()));

  scan345_main(0, NULL);

  m_Timer->start(10);
  
  updateActions();
}
QScan345Controller::~QScan345Controller ( )

Definition at line 84 of file qscan345controller.cpp.

References log_spy_message().

{
  log_spy_message("shutting down");
  closelog();
}

Member Function Documentation

void QScan345Controller::change_scanner_number ( int  n) [slot]
void QScan345Controller::changeMode ( int  n) [private]
void QScan345Controller::changeMode1200 ( ) [slot]

Definition at line 251 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(3);
}
void QScan345Controller::changeMode1600 ( ) [slot]

Definition at line 245 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(2);
}
void QScan345Controller::changeMode1800 ( ) [slot]

Definition at line 275 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(7);
}
void QScan345Controller::changeMode2000 ( ) [slot]

Definition at line 239 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(1);
}
void QScan345Controller::changeMode2300 ( ) [slot]

Definition at line 233 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(0);
}
void QScan345Controller::changeMode2400 ( ) [slot]

Definition at line 269 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(6);
}
void QScan345Controller::changeMode3000 ( ) [slot]

Definition at line 263 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(5);
}
void QScan345Controller::changeMode3450 ( ) [slot]

Definition at line 257 of file qscan345controller.cpp.

References changeMode().

{
  changeMode(4);
}
void QScan345Controller::check_scanner_number ( ) [private]

Definition at line 121 of file qscan345controller.cpp.

References m_Mutex, m_SerialNumbers, QScan345Settings::marscannernumber(), QScan345Settings::martabledir(), scanner_number_changed(), and QScan345Settings::setMarscannernumber().

{
  QMutexLocker lock(&m_Mutex);

  QScan345Settings s;
  QDir    d(s.martabledir());

  m_SerialNumbers.clear();

  QStringList l = d.entryList(QStringList("config.[0-9][0-9][0-9]"));
  printf("NFiles: %d\n", l.count());

  QString nm;

  foreach(nm,l) {
    QRegExp rr("config.([0-9]+)");
    if (rr.exactMatch(nm)) {
      printf("Scanner %s\n", qPrintable(rr.cap(1)));
      bool ok;
      int n = rr.cap(1).toInt(&ok);

      if (ok) {
        m_SerialNumbers.append(n);
      }
    } else {
      printf("%s\n", qPrintable(nm));
    }
  }

  int     n = s.marscannernumber();
  QFile   f0(d.filePath(tr("config.%1").arg(n,3,10,QLatin1Char('0'))));
  QFile   f1(d.filePath(tr("mar2300.%1").arg(n,3,10,QLatin1Char('0'))));
  QFile   f2(d.filePath(tr("mar3450.%1").arg(n,3,10,QLatin1Char('0'))));

  printf("f0 : %s\n", qPrintable(f0.fileName()));
  printf("f1 : %s\n", qPrintable(f1.fileName()));
  printf("f2 : %s\n", qPrintable(f2.fileName()));

  if (f0.exists() && f1.exists() && f2.exists()) {
    printf("Scanner %d is valid\n", n);
  } else {
    printf("Calibration Tables for Scanner %d not available\n", n);

    if (m_SerialNumbers.count()>0) {
      n = m_SerialNumbers.at(0);
      s.setMarscannernumber(n);
      printf("Scanner %d used instead\n", n);
    } else {
      printf("No scanner calibration tables available\n");
    }
  }

  emit scanner_number_changed(n);
}
void QScan345Controller::erase ( ) [slot]

Definition at line 209 of file qscan345controller.cpp.

References Command::exec_command().

{
  exec_command("comm erase");
}
void QScan345Controller::execute_command ( QString  cmd) [slot]

Definition at line 313 of file qscan345controller.cpp.

References Command::exec_command().

{
  exec_command(qPrintable(cmd));
}
void QScan345Controller::initialize ( ) [slot]
void QScan345Controller::log_spy_message ( QString  msg) [slot]

Definition at line 319 of file qscan345controller.cpp.

Referenced by ~QScan345Controller().

{
  syslog(LOG_LOCAL0 + LOG_INFO, "%s", qPrintable(msg.trimmed()));
}
int QScan345Controller::poll_status ( ) [slot]

Definition at line 281 of file qscan345controller.cpp.

References i, MarNet::net_data(), MarNet::net_msg(), MarNet::net_stat(), and netcontrol.

{
  int i, status=0;

  if (netcontrol) {
    i = net_data();

    while (1) {
      status = net_stat();

      if (status < 200) break;
    }

    i = net_msg();
  }

  return status;
}
void QScan345Controller::restart_scanner ( ) [slot]

Definition at line 185 of file qscan345controller.cpp.

References MarStartup::marStartup(), and MarHW::restart().

Referenced by change_scanner_number().

{
  restart();
  marStartup();
}
void QScan345Controller::scan ( ) [slot]

Definition at line 215 of file qscan345controller.cpp.

References Command::exec_command().

{
  exec_command("root testscan");
  exec_command("comm scan");
}
void QScan345Controller::scan_completed ( ) [signal]
void QScan345Controller::scan_mode_changed ( int  ) [signal]
void QScan345Controller::scanner_number_changed ( int  ) [signal]
void QScan345Controller::setFileRoot ( QString  root) [slot]

Definition at line 307 of file qscan345controller.cpp.

References com_root.

{
  strncpy(com_root, qPrintable(root), sizeof(com_root));
}
void QScan345Controller::setWorkingDirectory ( QString  d) [slot]

Definition at line 301 of file qscan345controller.cpp.

References com_dir.

{
  strncpy(com_dir, qPrintable(d), sizeof(com_dir));
}
void QScan345Controller::updateActions ( ) [private]

Definition at line 192 of file qscan345controller.cpp.

References m_MainWindow, and QScan345Settings::marscannermode().

Referenced by changeMode().

{
  QScan345Settings s;
  int m = s.marscannermode();

  m_MainWindow->actionMode2300->setChecked(m==0);
  m_MainWindow->actionMode2000->setChecked(m==1);
  m_MainWindow->actionMode1600->setChecked(m==2);
  m_MainWindow->actionMode1200->setChecked(m==3);
  m_MainWindow->actionMode3450->setChecked(m==4);
  m_MainWindow->actionMode3000->setChecked(m==5);
  m_MainWindow->actionMode2400->setChecked(m==6);
  m_MainWindow->actionMode1800->setChecked(m==7);

}
void QScan345Controller::updateScannerMenu ( )

Definition at line 91 of file qscan345controller.cpp.

References m_MainWindow, m_Mutex, and m_SerialNumbers.

Referenced by QScan345MainWindow::update_scanner_menu().

{
  QMutexLocker lock(&m_Mutex);
  int n;

  m_MainWindow -> menuScanner_Number -> clear();

  foreach(n,m_SerialNumbers) {
    QScan345SelectAction *a = new QScan345SelectAction(n, this);

    m_MainWindow -> menuScanner_Number->addAction(a);

    connect(a,    SIGNAL(triggered()),
            a,    SLOT(select_scanner()));
  }
}

Member Data Documentation

Definition at line 61 of file qscan345controller.h.

Referenced by updateActions(), and updateScannerMenu().

QMutex QScan345Controller::m_Mutex [private]

Definition at line 59 of file qscan345controller.h.

Referenced by check_scanner_number(), and updateScannerMenu().

Definition at line 63 of file qscan345controller.h.

Referenced by check_scanner_number(), and updateScannerMenu().

Definition at line 62 of file qscan345controller.h.

QTimer* QScan345Controller::m_Timer [private]

Definition at line 60 of file qscan345controller.h.


The documentation for this class was generated from the following files: