Go to the documentation of this file.00001 #include "event_slot.h"
00002
00003
00004 EventSlot::EventSlot() {}
00005
00006 void EventSlot::initiate(Ui::MainWindow &guiHandle, QApplication &app)
00007 {
00008 _guiHandle = &guiHandle;
00009 _app = &app;
00010 try
00011 {
00012 _arm = new ArmMove();
00013 }
00014 catch(std::runtime_error &ex)
00015 {
00016
00017 QMessageBox::warning(NULL, "Moveit error", "GUI can't use moveit. Please make sure moveit is up and running, and restart GUI.");
00018 _guiHandle->drive_btn->setEnabled(false);
00019 _guiHandle->preset_btn->setEnabled(false);
00020 _guiHandle->cmbox_preset->setEnabled(false);
00021
00022 }
00023 }
00024
00025 void EventSlot::setBatPwr(int val)
00026 {
00027 _guiHandle->battery_pbar->setValue(val);
00028 }
00029
00030 void EventSlot::setMoveState(Status state)
00031 {
00032 switch (state)
00033 {
00034 case CANCELED:
00035 {
00036 _guiHandle->move_status_lbl->setStyleSheet("QLabel { background-color : yellow; color : black }");
00037 _guiHandle->move_status_lbl->setText("Canceled");
00038 break;
00039 }
00040 case WORKING:
00041 {
00042 _guiHandle->move_pbar->setVisible(true);
00043 _guiHandle->cmbox_preset->setEnabled(false);
00044 _guiHandle->move_status_lbl->setStyleSheet("QLabel { background-color : yellow; color : black }");
00045 _guiHandle->move_status_lbl->setText("Planning...");
00046 _guiHandle->drive_btn->setEnabled(false);
00047 _guiHandle->preset_btn->setEnabled(false);
00048 break;
00049 }
00050 case SUCCESS:
00051 {
00052 _guiHandle->cmbox_preset->setEnabled(true);
00053 _guiHandle->move_pbar->setVisible(false);
00054 _guiHandle->move_status_lbl->setStyleSheet("QLabel { background-color : green; color : white }");
00055 _guiHandle->move_status_lbl->setText("Success");
00056 _guiHandle->drive_btn->setEnabled(true);
00057 _guiHandle->preset_btn->setEnabled(true);
00058 break;
00059 }
00060 case FAIL:
00061 {
00062 _guiHandle->cmbox_preset->setEnabled(true);
00063 _guiHandle->move_pbar->setVisible(false);
00064 _guiHandle->move_status_lbl->setStyleSheet("QLabel { background-color : red; color : white }");
00065 _guiHandle->move_status_lbl->setText("Failed");
00066 _guiHandle->drive_btn->setEnabled(true);
00067 _guiHandle->preset_btn->setEnabled(true);
00068 break;
00069 }
00070 }
00071 }
00072
00073 void EventSlot::setLed(long int val, Led* led)
00074 {
00075
00076 if (led->getTimeMarker() == val)
00077 {
00078 if (calcTimeOut(led->getTimeMarker(), clock()) > TIMEOUT)
00079 led->turnOff();
00080 }
00081 else if (calcTimeOut(led->getTimeMarker(), clock()) != -1)
00082 {
00083 led->setTimeMarker(val);
00084 if (!led->getState())
00085 led->turnOn();
00086 }
00087 }
00088
00089 void EventSlot::closeApp()
00090 {
00091 _app->quit();
00092 }
00093
00094 void EventSlot::moveArm()
00095 {
00096
00097 QMessageBox::StandardButton reply;
00098 reply = QMessageBox::question(NULL, "Warning", QString::fromStdString(_userMsg),
00099 QMessageBox::Yes|QMessageBox::No);
00100
00101 if (reply == QMessageBox::Yes)
00102 {
00103 setMoveState(WORKING);
00104 boost::thread worker(&EventSlot::execMove, this);
00105 } else
00106 setMoveState(CANCELED);
00107 }
00108 void EventSlot::moveArmToDrive()
00109 {
00110 _targetName = "driving";
00111 _userMsg = "Are you sure you want to run driving mode?";
00112 moveArm();
00113 }
00114
00115 void EventSlot::moveArmToPreset()
00116 {
00117 QString selection = _guiHandle->cmbox_preset->currentText();
00118 _targetName = selection.toStdString();
00119 _userMsg = "Are you sure you want to move the arm?";
00120 moveArm();
00121 }
00122
00123 bool EventSlot::execMove()
00124 {
00125
00126 if (_arm->plan(_targetName))
00127 {
00128 setMoveState(SUCCESS);
00129 _arm->move();
00130 } else
00131 setMoveState(FAIL);
00132 }
00133
00134
00135
00136
00137
00138
00139
00140 double EventSlot::calcTimeOut(long int startTime, long int endTime)
00141 {
00142 double timeOut = -1;
00143 if (endTime > startTime)
00144 timeOut = (endTime - startTime) / (double) CLOCKS_PER_SEC;
00145 return timeOut;
00146 }
00147
00148 EventSlot::~EventSlot()
00149 {
00150 delete _arm;
00151 }