- while (m_sock) {
- for (;;) {
- stat = m_sock->wait_data_intr(0, 50000);
- if (stat > 0) {
- break;
- }
- app->processEvents();
- if (m_api_set && m_messages_pending && is_notify_enabled()) {
- write_dir(".messages");
- m_messages_pending = false;
- }
- }
- m_sock->msg[0] = 0;
- stat = sock_read();
- if (stat >= 0) {
- if (mainWin->m_commDebug) Pmsg1(000, "got: %s\n", m_sock->msg);
- if (m_at_prompt) {
- display_text("\n");
- m_at_prompt = false;
- m_at_main_prompt = false;
- }
- }
- switch (m_sock->msglen) {
- case BNET_MSGS_PENDING :
- if (is_notify_enabled()) {
- if (mainWin->m_commDebug) Pmsg0(000, "MSGS PENDING\n");
- write_dir(".messages");
- displayToPrompt();
- m_messages_pending = false;
- }
- m_messages_pending = true;
- continue;
- case BNET_CMD_OK:
- if (mainWin->m_commDebug) Pmsg0(000, "CMD OK\n");
- m_at_prompt = false;
- m_at_main_prompt = false;
- mainWin->set_status(_("Command completed ..."));
- continue;
- case BNET_CMD_BEGIN:
- if (mainWin->m_commDebug) Pmsg0(000, "CMD BEGIN\n");
- m_at_prompt = false;
- m_at_main_prompt = false;
- mainWin->set_status(_("Processing command ..."));
- continue;
- case BNET_MAIN_PROMPT:
- if (mainWin->m_commDebug) Pmsg0(000, "MAIN PROMPT\n");
- m_at_prompt = true;
- m_at_main_prompt = true;
- mainWin->set_status(_("At main prompt waiting for input ..."));
- QApplication::restoreOverrideCursor();
- break;
- case BNET_PROMPT:
- if (mainWin->m_commDebug) Pmsg0(000, "PROMPT\n");
- m_at_prompt = true;
- m_at_main_prompt = false;
- mainWin->set_status(_("At prompt waiting for input ..."));
- QApplication::restoreOverrideCursor();
- break;
- case BNET_CMD_FAILED:
- if (mainWin->m_commDebug) Pmsg0(000, "CMD FAILED\n");
- mainWin->set_status(_("Command failed."));
- QApplication::restoreOverrideCursor();
- break;
- /* We should not get this one */
- case BNET_EOD:
- if (mainWin->m_commDebug) Pmsg0(000, "EOD\n");
- mainWin->set_status_ready();
- QApplication::restoreOverrideCursor();
- if (!m_api_set) {
- break;
- }
- continue;
- case BNET_START_SELECT:
- if (mainWin->m_commDebug) Pmsg0(000, "START SELECT\n");
- new selectDialog(this);
- break;
- case BNET_YESNO:
- if (mainWin->m_commDebug) Pmsg0(000, "YESNO\n");
- new yesnoPopUp(this);
- break;
- case BNET_RUN_CMD:
- if (mainWin->m_commDebug) Pmsg0(000, "RUN CMD\n");
- new runCmdPage();
- break;
- case BNET_START_RTREE:
- if (mainWin->m_commDebug) Pmsg0(000, "START RTREE CMD\n");
- new restorePage();
- break;
- case BNET_END_RTREE:
- if (mainWin->m_commDebug) Pmsg0(000, "END RTREE CMD\n");
- break;
- case BNET_ERROR_MSG:
- if (mainWin->m_commDebug) Pmsg0(000, "ERROR MSG\n");
- stat = sock_read(); /* get the message */
- display_text(msg());
- QMessageBox::critical(this, "Error", msg(), QMessageBox::Ok);
- break;
- case BNET_WARNING_MSG:
- if (mainWin->m_commDebug) Pmsg0(000, "WARNING MSG\n");
- stat = sock_read(); /* get the message */
- display_text(msg());
- QMessageBox::critical(this, "Warning", msg(), QMessageBox::Ok);
- break;
- case BNET_INFO_MSG:
- if (mainWin->m_commDebug) Pmsg0(000, "INFO MSG\n");
- stat = sock_read(); /* get the message */
- display_text(msg());
- mainWin->set_status(msg());
- break;
- }
- if (is_bnet_stop(m_sock)) { /* error or term request */
- if (mainWin->m_commDebug) Pmsg0(000, "BNET STOP\n");
- stopTimer();
- m_sock->close();
- m_sock = NULL;
- mainWin->actionConnect->setIcon(QIcon(":images/disconnected.png"));
- QBrush redBrush(Qt::red);
- QTreeWidgetItem *item = mainWin->getFromHash(this);
- item->setForeground(0, redBrush);
- if (m_notifier) {
- m_notifier->setEnabled(false);
- delete m_notifier;
- m_notifier = NULL;
- }
- mainWin->set_status(_("Director disconnected."));
- QApplication::restoreOverrideCursor();
- stat = BNET_HARDEOF;