diff --git a/Sh3.pro b/Sh3.pro index 762cf49..98a8237 100644 --- a/Sh3.pro +++ b/Sh3.pro @@ -45,7 +45,8 @@ SOURCES += main.cpp\ checkboxmod.cpp \ grairobject.cpp \ vvod2z.cpp \ - table2z.cpp + table2z.cpp \ + graphicscrossitem.cpp HEADERS += widget.h \ zerkus.h \ @@ -82,7 +83,8 @@ HEADERS += widget.h \ checkboxmod.h \ grairobject.h \ vvod2z.h \ - table2z.h + table2z.h \ + graphicscrossitem.h FORMS += widget.ui \ zerkus.ui \ diff --git a/pics.qrc b/pics.qrc index 800cc85..9a75cf9 100644 --- a/pics.qrc +++ b/pics.qrc @@ -17,5 +17,6 @@ pics/loading.png + pics/shutdown.png diff --git a/pics/dead_end.png b/pics/dead_end.png new file mode 100644 index 0000000..9f92612 Binary files /dev/null and b/pics/dead_end.png differ diff --git a/pics/shutdown.png b/pics/shutdown.png new file mode 100644 index 0000000..35a93f1 Binary files /dev/null and b/pics/shutdown.png differ diff --git a/widget.cpp b/widget.cpp index 5027423..964e119 100644 --- a/widget.cpp +++ b/widget.cpp @@ -7,11 +7,10 @@ Widget::Widget(QWidget *parent) : QWidget(parent), - ui(new Ui::Widget) -{ + ui(new Ui::Widget) { ui->setupUi(this); -// connect(qApp, SIGNAL(focusChanged(QWidget*, QWidget*)), this, SLOT(focusSS(QWidget*, QWidget*))); + // connect(qApp, SIGNAL(focusChanged(QWidget*, QWidget*)), this, SLOT(focusSS(QWidget*, QWidget*))); ui->btnZone->setStyleSheet("background-color: green"); @@ -70,35 +69,38 @@ Widget::Widget(QWidget *parent) : connect(tmrReport, SIGNAL(timeout()), this, SLOT(sendReport())); tmrReport->start(55); - - - + tmrFocus = new QTimer(); + connect(tmrFocus, SIGNAL(timeout()), this, SLOT(getFocus())); showSplash(3); -// addTargets(); -// ASnumTarget = 1; + // addTargets(); + // ASnumTarget = 1; } -Widget::~Widget() -{ +Widget::~Widget() { delete ui; } - -void Widget::getFocus() -{ - // -- платформозависимый кусок. Нужен для гарантированного получения фокуса в основное окно. - HWND id = GetForegroundWindow(); +void Widget::setGrabFocus(int d) { + if (d) + tmrFocus->start(1000); + else + tmrFocus->stop(); +} +void Widget::getFocus() { + if (!openWidget) { + // -- платформозависимый кусок. Нужен для гарантированного получения фокуса в основное окно. + HWND fgW = GetForegroundWindow(); int iMyTID = GetCurrentThreadId(); - int iCurrTID = GetWindowThreadProcessId(id,0); + int iCurrTID = GetWindowThreadProcessId(fgW, 0); AttachThreadInput(iMyTID, iCurrTID, TRUE); SetForegroundWindow(winId()); AttachThreadInput(iMyTID, iCurrTID, FALSE); - // -- - + // -- + } } void Widget::activateWindow(int c) @@ -168,19 +170,18 @@ void Widget::process_CU_KRU_KDG() { } if (sizeOfPkg == 63) { // KRU - d >> i16 >> i16; - Q_ASSERT(i16 == 8); - d >> i16; - Q_ASSERT(i16 == 1); - d >> i32 >> i16; - d >> zoneType; - d >> anglStart >> anglEnd; - anglStart -= anglEnd/2; - anglEnd = anglStart+anglEnd; - setSector(zoneType, anglStart, anglEnd); + d >> i16 >> i16; + Q_ASSERT(i16 == 8); + d >> i16; + Q_ASSERT(i16 == 1); + d >> i32 >> i16; + d >> zoneType; + d >> anglStart >> anglEnd; + anglStart -= anglEnd/2; + anglEnd = anglStart+anglEnd; + setSector(zoneType, anglStart, anglEnd); } } - } void Widget::setSector(qint8 zoneType, float anglStart, float anglEnd) { @@ -188,7 +189,7 @@ void Widget::setSector(qint8 zoneType, float anglStart, float anglEnd) { p.left = anglStart; p.right = anglEnd; - switch (zoneType) { + switch (zoneType) { case 1: ownSect = p; break; @@ -212,9 +213,9 @@ void Widget::newOptServerData() d.setByteOrder(QDataStream::LittleEndian); qint16 len; qint8 tByte; -// qint16 tWord; + // qint16 tWord; bool tBool; -// qreal tReal; + // qreal tReal; float tFloat; QString dbgStr; @@ -236,17 +237,17 @@ void Widget::newOptServerData() d >> tFloat; ugolGUN = tFloat*180/M_PI; -// dbgStr = QString("ugolGUN = ")+QString::number(tFloat, 'f', 4); -// dbgBuf = dbgStr.toLocal8Bit(); -// processSendingDatagrams(dbgBuf, 45011); + // dbgStr = QString("ugolGUN = ")+QString::number(tFloat, 'f', 4); + // dbgBuf = dbgStr.toLocal8Bit(); + // processSendingDatagrams(dbgBuf, 45011); d >> tFloat; azimutGUN = azimutKurs + tFloat*180/M_PI; -// dbgStr = QString("azimutGUN = ")+QString::number(tFloat, 'f', 4); -// dbgBuf = dbgStr.toLocal8Bit(); -// processSendingDatagrams(dbgBuf, 45011); + // dbgStr = QString("azimutGUN = ")+QString::number(tFloat, 'f', 4); + // dbgBuf = dbgStr.toLocal8Bit(); + // processSendingDatagrams(dbgBuf, 45011); d >> tFloat; // azAntRLS d >> tFloat; // umAntRLS d >> tBool; // Poxod @@ -266,7 +267,7 @@ void Widget::newOptServerData() umMissTur = -162; else umMissTur = int (tFloat*3000/M_PI); -// qDebug("%d umMissTur = %d", basePoxod, umMissTur); + // qDebug("%d umMissTur = %d", basePoxod, umMissTur); } } } @@ -277,10 +278,10 @@ void Widget::newOptServerData2() QDataStream d(&datagram, QIODevice::ReadOnly); d.setByteOrder(QDataStream::LittleEndian); qint16 len; -// qint8 tByte; -// qint16 tWord; -// bool tBool; -// qreal tReal; + // qint8 tByte; + // qint16 tWord; + // bool tBool; + // qreal tReal; float tFloat; QString dbgStr; @@ -324,19 +325,19 @@ void Widget::sendReport() - QByteArray buf; + QByteArray buf; QDataStream d(&buf, QIODevice::WriteOnly); d.setByteOrder(QDataStream::LittleEndian); -// квитанция + // квитанция d << (qint8)currentTaskNum; -// метео автоном + // метео автоном d << (qint16)metAv.temp << (qint8)metAv.wind << (qint16)metAv.azim << (qint16)metAv.pressure; -//режим метео + //режим метео if (meteoSred) tByte=1; else tByte = 0; d << tByte; -// метеосреднее + // метеосреднее QByteArray tmpMetSr = metSr.toLocal8Bit(); tmpMetSr.resize(182); @@ -346,9 +347,9 @@ void Widget::sendReport() d << tByte; } -// настрел + // настрел d << (qint16)ZAnastrel << (qint16)ZAtempZar; -// ошибки гор, верт и дБ + // ошибки гор, верт и дБ for (i=0; i<9; i++) { @@ -360,41 +361,41 @@ void Widget::sendReport() d << (qint16)errZAver[i]; } - d << (qint16)errZAdB; + d << (qint16)errZAdB; -// зеркальная стрельба + // зеркальная стрельба d << (qint8)rezhimZerk; -// положение + // положение - tReal = ts.x; d << tReal; - tReal = ts.y; d << tReal; - tReal = ts.h; d << tReal; - tReal = azimutKurs; d << tReal; + tReal = ts.x; d << tReal; + tReal = ts.y; d << tReal; + tReal = ts.h; d << tReal; + tReal = azimutKurs; d << tReal; - d.setFloatingPointPrecision(QDataStream::SinglePrecision); - tFloat = ugolGUN; d << tFloat; - tFloat = azimutGUN; d << tFloat; - d.setFloatingPointPrecision(QDataStream::DoublePrecision); + d.setFloatingPointPrecision(QDataStream::SinglePrecision); + tFloat = ugolGUN; d << tFloat; + tFloat = azimutGUN; d << tFloat; + d.setFloatingPointPrecision(QDataStream::DoublePrecision); - for (i=0; i<4; i++) - { - tByte=0; - d << tByte; - } + for (i=0; i<4; i++) + { + tByte=0; + d << tByte; + } - tBool = true; - d << tBool; + tBool = true; + d << tBool; -// d<radioButton_set5->isChecked())||(ui->radioButton_set6->isChecked())); d << tBool; @@ -418,9 +419,19 @@ void Widget::sendReport() tWord = 0; d << tWord; -// резерв 4x байт и 9 х реал + // вставка режима работы ИСХ, БР, ФК или ТРУ + if ((cvsRezhim>0)&&(cvsRezhim<5)) + tByte = cvsRezhim; + else tByte = -1; - for (i=0; i<4; i++) + d << tByte; + + tBool = systemHalt; + d << tBool; + + // резерв 2x байт и 9 х реал + + for (i=0; i<2; i++) { tByte = i*10+i; d << tByte; @@ -432,8 +443,8 @@ void Widget::sendReport() d << tReal; } - if (!silentMode) - udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6617); + if (!silentMode) + udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6617); } @@ -443,80 +454,75 @@ void Widget::synhrTimeout() buf.resize(2); buf[0] = 35; buf[1] = currentTaskNum; - - -//QString dbgStr; -//QByteArray dbgBuf; -//dbgStr = QString(" +++++++++++++ writed to udp = ")+QString::number(currentTaskNum); -//dbgBuf = dbgStr.toLocal8Bit(); -//processSendingDatagrams(dbgBuf, 45011); - - - // udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("127.0.0.1"), 6600); - if (!silentMode) - udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6600); + if (!silentMode) + udpSend->writeDatagram(buf.data(), buf.size(), QHostAddress("192.168.0.255"), 6600); } void Widget::newTaskReadDatagrams() { - int len; - QByteArray datagram; - QByteArray tmpMetSr; + int len; + QByteArray datagram; + QByteArray tmpMetSr; - QDataStream d(&datagram, QIODevice::ReadOnly); - d.setByteOrder(QDataStream::LittleEndian); + QDataStream d(&datagram, QIODevice::ReadOnly); + d.setByteOrder(QDataStream::LittleEndian); - qint8 tByte; - qint16 tWord; - bool tBool, flAutoFill; - qreal tReal; - float tFloat; - int i; + qint8 tByte; + qint16 tWord; + bool tBool, flAutoFill; + qreal tReal; + float tFloat; + int i; - QString dbgStr; - QByteArray dbgBuf; + QString dbgStr; + QByteArray dbgBuf; - tmpMetSr.resize(182); - tmpMetSr.fill(0, 182); + tmpMetSr.resize(182); + tmpMetSr.fill(0, 182); - while (udpNewTask->hasPendingDatagrams()) + while (udpNewTask->hasPendingDatagrams()) + { + datagram.clear(); + len = udpNewTask->pendingDatagramSize(); + datagram.resize(len); + udpNewTask->readDatagram(datagram.data(), datagram.size()); + if (len == 2) { - datagram.clear(); - len = udpNewTask->pendingDatagramSize(); - datagram.resize(len); - udpNewTask->readDatagram(datagram.data(), datagram.size()); - if (len == 2) + d >> tByte; + if (tByte==2) { d >> tByte; + if (tByte==0) {QTimer::singleShot(100, this, SLOT(close()));} + if (tByte==1) // выключение + { + writeFile(); + QString program = "c:/Shilka_exe/shutdown.exe"; + QStringList arguments; + QProcess *myProcess = new QProcess(this); + myProcess->startDetached(program, arguments); + QTimer::singleShot(100, this, SLOT(close())); + } + if (tByte==2) // перезагрузка + { + writeFile(); + QString program = "c:/Shilka_exe/reboot.exe"; + QStringList arguments; + QProcess *myProcess = new QProcess(this); + myProcess->startDetached(program, arguments); + QTimer::singleShot(100, this, SLOT(close())); + } + } + if (tByte==1) + { + // qDebug("-1"); + d >> tByte; + // qDebug("---%d", tByte); if (tByte==2) { - d >> tByte; - if (tByte==0) {QTimer::singleShot(100, this, SLOT(close()));} - if (tByte==1) // выключение + if (splashIsOn==13) + rebootSlot(); + else { - QString program = "c:/Shilka_exe/shutdown.exe"; - QStringList arguments; - QProcess *myProcess = new QProcess(this); - myProcess->startDetached(program, arguments); - QTimer::singleShot(100, this, SLOT(close())); - } - if (tByte==2) // перезагрузка - { - QString program = "c:/Shilka_exe/reboot.exe"; - QStringList arguments; - QProcess *myProcess = new QProcess(this); - myProcess->startDetached(program, arguments); - QTimer::singleShot(100, this, SLOT(close())); - } - } - if (tByte==1) - { - // qDebug("-1"); - d >> tByte; - // qDebug("---%d", tByte); - if (tByte==2) - { - currentNum = 0; VCUnumTarget=-1; ASnumTarget=-1; @@ -524,137 +530,127 @@ void Widget::newTaskReadDatagrams() { targetsIds[i]=0; grAir[i]->setNull(); - } } } } - - if (len==308) - { - d >> tByte; - currentTaskNum = tByte; - -//dbgStr = QString("read from udp = ")+QString::number(tByte)+QString(" ---- curTaskNum = ")+QString::number(currentTaskNum); -//dbgBuf = dbgStr.toLocal8Bit(); -//processSendingDatagrams(dbgBuf, 45011); - - d >> tWord >> tByte >> tByte; - - d >> flAutoFill; // autoFill !!!!!!! - - if (flAutoFill) - { - - - d >> tWord; // temp Vozduh - metAv.temp = tWord; - d >> tByte; // skor Vetra - metAv.wind = tByte; - d >> tWord; // azim Vetra v DU - metAv.azim = tWord; - d >> tWord; // davl vozduh v mm.rt.st. - metAv.pressure = tWord; - d >> tByte; // 0 - meteoAvtonom - - setMeteo(!tByte, tByte); - - - for (i=0; i<182; i++) // meteoSred - { - d >> tByte; - tmpMetSr[i] = tByte; - } - metSr = QString(tmpMetSr); - - d >> tWord; // Nastrel stvolov - ZAnastrel = tWord; - d >> tWord; // temp zaryad - ZAtempZar = tWord; - - - for (i=0; i<9; i++) // oshibki ZU goriz - { - d >> tWord; - errZAgor[i]=tWord; - } - - for (i=0; i<7; i++) // oshibki ZU vert - { - d >> tWord; - errZAver[i]=tWord; - } - - d >> tWord; // поправка в ДУ - errZAdB = tWord; - - d >> tByte; // byte - zerk strelba [0 - vikl, 1 - x, 2 - y] - rezhimZerk = tByte; - - - for (i=0; i<5; i++) d>>tByte; - -// pos начался - d >> tReal; // x - ts.x = (int)tReal; - d >> tReal; // y - ts.y = (int)tReal; - d >> tReal; // h - ts.h = (int)tReal; - d >> tReal; // Azim kurs - azimutKurs = tReal; - - d.setFloatingPointPrecision(QDataStream::SinglePrecision); - d >> tFloat; // UgolM Gun -// if (fabs(tFloat-ugolGUNprev)<1) - ugolGUN = tFloat; -// ugolGUNprev = tFloat; -// dbgStr = QString("ugolGUN = ")+QString::number(tFloat, 'f', 4); -// dbgBuf = dbgStr.toLocal8Bit(); -// processSendingDatagrams(dbgBuf, 45011); - - d >> tFloat; // Azim Gun -// if (fabs(tFloat-azimutGUNprev)<1) - azimutGUN = tFloat; -// azimutGUNprev = tFloat; -// dbgStr = QString("azimutGUN = ")+QString::number(tFloat, 'f', 4); -// dbgBuf = dbgStr.toLocal8Bit(); -// processSendingDatagrams(dbgBuf, 45011); - - - d.setFloatingPointPrecision(QDataStream::DoublePrecision); - - // Ракеты состояние (0 - нет, 1 - есть, 2 - улетела) - for (i=0; i<4; i++) - { - d>>tByte; - } - d>>tBool; - - - d>>tBool; // <<-- костыль, что то не так с укладкой структуры из Дельфи - d>>tWord;// <<-- костыль, что то не так с укладкой структуры из Дельфи -// pos закончился - - d >> tWord; // общий боезапас ЗА - for (i=0; i<4; i++) // боезапас ЗА по стволам - { - d >> tWord; - BK[i] = tWord; - } - - d >> tByte; - BK[4] = tByte; // кол-во ракет - - // Работаем с МРУ или одиночно - d >> tBool; - MRUmode = tBool; - - } // if flAutoFill - - } } + if (len==308) + { + d >> tByte; + currentTaskNum = tByte; + + //dbgStr = QString("read from udp = ")+QString::number(tByte)+QString(" ---- curTaskNum = ")+QString::number(currentTaskNum); + //dbgBuf = dbgStr.toLocal8Bit(); + //processSendingDatagrams(dbgBuf, 45011); + + d >> tWord >> tByte >> tByte; + + d >> flAutoFill; // autoFill !!!!!!! + + if (flAutoFill) + { + + + d >> tWord; // temp Vozduh + metAv.temp = tWord; + d >> tByte; // skor Vetra + metAv.wind = tByte; + d >> tWord; // azim Vetra v DU + metAv.azim = tWord; + d >> tWord; // davl vozduh v mm.rt.st. + metAv.pressure = tWord; + d >> tByte; // 0 - meteoAvtonom + + setMeteo(!tByte, tByte); + + + for (i=0; i<182; i++) // meteoSred + { + d >> tByte; + tmpMetSr[i] = tByte; + } + metSr = QString(tmpMetSr); + + d >> tWord; // Nastrel stvolov + ZAnastrel = tWord; + d >> tWord; // temp zaryad + ZAtempZar = tWord; + + + for (i=0; i<9; i++) // oshibki ZU goriz + { + d >> tWord; + errZAgor[i]=tWord; + } + + for (i=0; i<7; i++) // oshibki ZU vert + { + d >> tWord; + errZAver[i]=tWord; + } + + d >> tWord; // поправка в ДУ + errZAdB = tWord; + + d >> tByte; // byte - zerk strelba [0 - vikl, 1 - x, 2 - y] + rezhimZerk = tByte; + + + for (i=0; i<5; i++) d>>tByte; + + // pos начался + d >> tReal; // x + ts.x = (int)tReal; + d >> tReal; // y + ts.y = (int)tReal; + d >> tReal; // h + ts.h = (int)tReal; + d >> tReal; // Azim kurs + azimutKurs = tReal; + + d.setFloatingPointPrecision(QDataStream::SinglePrecision); + d >> tFloat; // UgolM Gun + ugolGUN = tFloat; + + d >> tFloat; // Azim Gun + + azimutGUN = tFloat; + + d.setFloatingPointPrecision(QDataStream::DoublePrecision); + + // Ракеты состояние (0 - нет, 1 - есть, 2 - улетела) + for (i=0; i<4; i++) + { + d>>tByte; + } + d>>tBool; + + + d>>tBool; // <<-- костыль, что то не так с укладкой структуры из Дельфи + d>>tWord;// <<-- костыль, что то не так с укладкой структуры из Дельфи + // pos закончился + + d >> tWord; // общий боезапас ЗА + for (i=0; i<4; i++) // боезапас ЗА по стволам + { + d >> tWord; + BK[i] = tWord; + } + + d >> tByte; + BK[4] = tByte; // кол-во ракет + + // Работаем с МРУ или одиночно + d >> tBool; + MRUmode = tBool; + + } // if flAutoFill + + } + } + } void Widget::keybReadDatagrams(int d1, int d2, int d3, int d4, int d5) @@ -665,9 +661,9 @@ void Widget::keybReadDatagrams(int d1, int d2, int d3, int d4, int d5) int i; int winCode[29]={0, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, - VK_DIVIDE, VK_ADD, VK_SUBTRACT, VK_MULTIPLY, VK_DECIMAL, - VK_RETURN, VK_F11, VK_F12, VK_CONTROL, VK_MENU, VK_DELETE, - VK_BACK, VK_ESCAPE, VK_TAB, VK_RIGHT, VK_LEFT, VK_DOWN, VK_UP}; + VK_DIVIDE, VK_ADD, VK_SUBTRACT, VK_MULTIPLY, VK_DECIMAL, + VK_RETURN, VK_F11, VK_F12, VK_CONTROL, VK_MENU, VK_DELETE, + VK_BACK, VK_ESCAPE, VK_TAB, VK_RIGHT, VK_LEFT, VK_DOWN, VK_UP}; static int pressedKey[29] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -678,126 +674,86 @@ void Widget::keybReadDatagrams(int d1, int d2, int d3, int d4, int d5) - int buf1[4]; - buf1[0]=d2; buf1[1]=d3; buf1[2]=d4; buf1[3]=d5; -// Проверка NumLock - key = d1; - if (((key==0)&&(flNum))||((key==1)&&(!flNum))) + int buf1[4]; + buf1[0]=d2; buf1[1]=d3; buf1[2]=d4; buf1[3]=d5; + // Проверка NumLock + key = d1; + if (((key==0)&&(flNum))||((key==1)&&(!flNum))) + { + flNum = (key==1); + keybd_event(VK_NUMLOCK, 0,0,0); + keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0); + + + key=0; + // + } + + + // + for (i=0; i<4; i++) + { + if ( (buf1[i]<0) || (buf1[i]>29) ) buf1[i]=0; + + } + + + // Если в комбинации нет Alt или Ctrl их надо отжать + // Если в комбинации есть Alt или Ctrl 1й раз нажимаем, дальше игнорируем до пропажи + + + int s=0; + for (i=0; i<4; i++) {if (buf1[i]!=19) {s++;}} + if (s==4) + { + if (flCtrl) keybd_event(VK_CONTROL, 0,KEYEVENTF_KEYUP,0); + flCtrl = false; + } + + s=0; + for (i=0; i<4; i++) {if (buf1[i]!=20) { s++;}} + if (s==4) + { + + if (flAlt) keybd_event(VK_MENU, 0,KEYEVENTF_KEYUP,0); + flAlt = false; + } + + + for (i=0; i<4; i++) + { + if (buf1[i]==19) { - flNum = (key==1); - keybd_event(VK_NUMLOCK, 0,0,0); - keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0); - - - key=0; - // + if (!flCtrl) keybd_event(VK_CONTROL, 0,0,0); + flCtrl = true; + buf1[i]=0; } - - -// - for (i=0; i<4; i++) + if (buf1[i]==20) { - if ( (buf1[i]<0) || (buf1[i]>29) ) buf1[i]=0; - + if (!flAlt) keybd_event(VK_MENU, 0,0,0); + flAlt = true; + buf1[i]=0; } - - -// Если в комбинации нет Alt или Ctrl их надо отжать -// Если в комбинации есть Alt или Ctrl 1й раз нажимаем, дальше игнорируем до пропажи - - - int s=0; - for (i=0; i<4; i++) {if (buf1[i]!=19) {s++;}} - if (s==4) - { - if (flCtrl) keybd_event(VK_CONTROL, 0,KEYEVENTF_KEYUP,0); - flCtrl = false; - } - - s=0; - for (i=0; i<4; i++) {if (buf1[i]!=20) { s++;}} - if (s==4) - { - - if (flAlt) keybd_event(VK_MENU, 0,KEYEVENTF_KEYUP,0); - flAlt = false; - } - - - for (i=0; i<4; i++) - { - if (buf1[i]==19) - { - if (!flCtrl) keybd_event(VK_CONTROL, 0,0,0); - flCtrl = true; - buf1[i]=0; - } - if (buf1[i]==20) - { - if (!flAlt) keybd_event(VK_MENU, 0,0,0); - flAlt = true; - buf1[i]=0; - } - - - } - - -// если есть код отличный от 0 - if (buf1[0]+buf1[1]+buf1[2]+buf1[3]) - { - // if (splashIsOn==0) - { - for (i=0; i<4; i++) - { - if (buf1[i]!=0) - { -//qDebug("----- %d [17]=%d [18]=%d ", buf1[0], pressedKey[17], pressedKey[18]); - if ((pressedKey[buf1[i]]==0)||(pressedKey[buf1[i]]>keybMaxDelay)) - keybd_event(winCode[buf1[i]],0,0,0); - } - } -//qDebug("[][][] %d %d %d %d ", buf1[0], buf1[1], buf1[2], buf1[3]); - for (i=1; i<29; i++) - { - if ((buf1[0]!=i)&&(buf1[1]!=i)&&(buf1[2]!=i)&&(buf1[3]!=i)) - { - pressedKey[i]=0; - } - else - { - pressedKey[i]++; - } - - } - - -// for (i=0; i<4; i++) -// if (buf1[i]!=0) keybd_event(winCode[buf1[i]],0,KEYEVENTF_KEYUP,0); - - // if (flCtrl) keybd_event(VK_CONTROL, 0,KEYEVENTF_KEYUP,0); - // if (flAlt) keybd_event(VK_MENU, 0,KEYEVENTF_KEYUP,0); - } - -// if (splashIsOn==4) -// for (i=0; i<4; i++) -// if (buf1[i]==16) -// { -// hideSplash(); -// ui->graphicsView->centerOn(0,0); -// } + } + // если работаем в режиме интерфейса или ввода даты или ввода логина или пароля + if ((splashIsOn==0)||(splashIsOn==4)||(splashIsOn==7)||(splashIsOn==8)) { + // если есть код отличный от 0 + if (buf1[0]+buf1[1]+buf1[2]+buf1[3]) { + for (i=0; i<4; i++) + if (buf1[i]!=0) + if ((pressedKey[buf1[i]]==0)||(pressedKey[buf1[i]]>keybMaxDelay)) + keybd_event(winCode[buf1[i]],0,0,0); + //qDebug("[][][] %d %d %d %d ", buf1[0], buf1[1], buf1[2], buf1[3]); + for (i=1; i<29; i++) + if ((buf1[0]!=i)&&(buf1[1]!=i)&&(buf1[2]!=i)&&(buf1[3]!=i)) + pressedKey[i]=0; + else + pressedKey[i]++; } // if (buf1[0]+buf1[1]+buf1[2]+buf1[3]) else - { for (i=0; i<29; i++) pressedKey[i]=0; - } - -// ----- платформозависимый кусок - реализация для Вин -// keybd_event(keyWin, 0,0,0); -// keybd_event(keyWin, 0, KEYEVENTF_KEYUP, 0); - -// } + } } void Widget::processPendingDatagrams() // сообщение о целях @@ -821,7 +777,7 @@ void Widget::processPendingDatagrams() // datagram.resize(udpSocket->pendingDatagramSize()); udpSocket->readDatagram(datagram.data(), datagram.size()); - // qDebug("size=%d", datagram.size()); + // qDebug("size=%d", datagram.size()); if (datagram.size()==1460) { // Анализ и действие @@ -894,7 +850,10 @@ void Widget::processPendingDatagrams() // //qDebug(" ugolRLS: %f", tFloat); d.setFloatingPointPrecision(QDataStream::DoublePrecision); - d>>tByte>>tByte>>tByte; + d>>tByte>>tByte; + // if (tByte==36) + // showSplash(13); + d>>tByte; d >> tReal; // эквивалент 2 сингл azMetkaCURLS и dalnMetkaCURLS @@ -930,17 +889,19 @@ void Widget::processPendingDatagrams() // if (pwrCVS[0]==1) { if (openWidget) openWidget->close(); + if (splashIsOn==15) + { + loadScreenTmr->stop(); + tmpGS->clear(); + tmpGS->addPixmap(QPixmap(":/fon/pics/loading.png")); + } showSplash(1); } else { if ((pwrCVS[0]==2)&&(splashIsOn==1)) { - - showSplash(3); - tmpGS->clear(); - tmpGS->addPixmap(QPixmap(":/fon/pics/loading.png")); - + rebootSlot(); // qDebug("power"); } } @@ -958,10 +919,7 @@ void Widget::processPendingDatagrams() // //-- if (tByte==2) { - showSplash(3); - tmpGS->clear(); - tmpGS->addPixmap(QPixmap(":/fon/pics/loading.png")); - + rebootSlot(); // qDebug("reboot"); } @@ -989,7 +947,7 @@ void Widget::processPendingDatagrams() // d >> tWord; // АС цель if (tWord==0) ASnumTarget=-1; else ASnumTarget = findTargetFromId(tWord); -// if (tWord!=8) qDebug("-- %d", tWord); + // if (tWord!=8) qDebug("-- %d", tWord); d >> tByte; // inZone if (tByte==2) @@ -1053,8 +1011,8 @@ void Widget::processPendingDatagrams() // ui->radioButton_Z1->setChecked(0); ui->btnZone->hide(); -// ui->lineEdit_6->setText("0"); -// ui->lineEdit_7->setText("0"); + // ui->lineEdit_6->setText("0"); + // ui->lineEdit_7->setText("0"); basePoxod = 2; break; case 2: @@ -1063,18 +1021,21 @@ void Widget::processPendingDatagrams() // break; default: basePoxod = 0; -// qDebug("%d", tByte); + // qDebug("%d", tByte); break; } + qreal crossD, crossAn; + d.setFloatingPointPrecision(QDataStream::SinglePrecision); d >> AS_t1 >> AS_t2 >> VCU_t1 >> VCU_t2; d >> R_N_t1 >> R_N_t2 >> R_V_t1 >> R_V_t2; - d >> tFloat >> tFloat; - d >> AS_par; + d >> crossD >> crossAn; + d >> AS_par; // Param ui->lineEdit_5->setText(QString::number(AS_par)); d >> tFloat; d.setFloatingPointPrecision(QDataStream::DoublePrecision); + grCross->setPosPolar(crossD/100, crossAn); d >> tByte; // резерв d >> tWord; // резерв @@ -1128,10 +1089,9 @@ void Widget::processPendingDatagrams() // d.setFloatingPointPrecision(QDataStream::DoublePrecision); - if (fl_target) - { - if (!MRUmode) addTarget(id, aType, gType, cX, cY, cH, vX, vY); - if (!MRUmode) subAr[findTargetFromId(id)]=true; + if (fl_target && !MRUmode) { + addTarget(id, aType, gType, cX, cY, cH, vX, vY); + subAr[findTargetFromId(id)]=true; } } if (!MRUmode) clearOldTarget(subAr); @@ -1230,36 +1190,36 @@ void Widget::process_TargetKDG() { // // CustomDataSize: byte; d >> tByte; switch (CDType) { - case 1: - d >> tByte; - d >> tWord; - if (tByte==0) gType = targetEnemy; - else if (tByte==1) gType = targetOwn; - else gType = targetUnknown; - // обновляем данные по цели id, если её еще не было, то создается новая с выделением внутреннего номера - if (MRUmode) { - addTarget(id, aType, gType, cX, cY, cH, vX, vY); - seenTargets[findTargetFromId(id)]=true; - } + case 1: + d >> tByte; + d >> tWord; + if (tByte==0) gType = targetEnemy; + else if (tByte==1) gType = targetOwn; + else gType = targetUnknown; + // обновляем данные по цели id, если её еще не было, то создается новая с выделением внутреннего номера + if (MRUmode) { + addTarget(id, aType, gType, cX, cY, cH, vX, vY); + seenTargets[findTargetFromId(id)]=true; + } break; - case 2: - d >> tFloat; - d >> tWord; - d >> tByte; - d >> tByte; - break; - case 3: - d >> tFloat; - d >> tFloat; - d >> tWord ; - d >> tWord; - d >> tWord ; - d >> tWord; - d >> tByte; - d >> tByte; + case 2: + d >> tFloat; + d >> tWord; + d >> tByte; + d >> tByte; + break; + case 3: + d >> tFloat; + d >> tFloat; + d >> tWord ; + d >> tWord; + d >> tWord ; + d >> tWord; + d >> tByte; + d >> tByte; - d >> tWord ; - d >> tWord; // выравнивание + d >> tWord ; + d >> tWord; // выравнивание break; case 0: break; @@ -1268,7 +1228,7 @@ void Widget::process_TargetKDG() { // } } -// Q_ASSERT(d.atEnd()); + // Q_ASSERT(d.atEnd()); } // while hasPendingDatagram } @@ -1315,7 +1275,10 @@ void Widget::msTickGraph() grAzimutGUN->setText(str); - aRLSmdu = int((ugolGUN)*6000/360) % 6000; + if ((ugolGUN<90)&&(ugolGUN>-90)) + aRLSmdu = int((ugolGUN)*50/3) % 6000; + else + aRLSmdu=0; str.clear(); if (ugolGUN<0) { str = QString("-"); aRLSmdu = -aRLSmdu;} @@ -1329,7 +1292,7 @@ void Widget::msTickGraph() grAzimutGUN->setText(str,1); qreal tDU = (qreal((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0))) *6/100; -// qDebug("%f ", tDU); + // qDebug("%f ", tDU); grAzimutKurs->setGlobalAngle(90-azimutKurs-tDU); grAzimutKurs->setTextPos(QPointF((185*sin((azimutKurs+tDU)*M_PI/180)-10)/zoom, -185*cos((azimutKurs+tDU)*M_PI/180)/zoom)); @@ -1344,18 +1307,18 @@ void Widget::msTickGraph() str.append(QString::number(aRLSmdu)); grAzimutKurs->setText(str); -//qDebug("azimRLS: %f", azimutRLS); + //qDebug("azimRLS: %f", azimutRLS); grAzimutRLS->setAngle(-azimutRLS+90); grOwnSect->setAngles(-ownSect.left+90, -ownSect.right+90); grKzsSect->setAngles(-kzsSect.left+90, -kzsSect.right+90); -// grAir[0]->setCoord(grAir[0]->cX+0.20, grAir[0]->cY+0.15); -// grAir[2]->setCoord(grAir[2]->cX-0.30, grAir[2]->cY+0.15); -// for (int i=0; i<100; i++) -// if (grAir[i]->exist) -// grAir[i]->moveByTime(1); + // grAir[0]->setCoord(grAir[0]->cX+0.20, grAir[0]->cY+0.15); + // grAir[2]->setCoord(grAir[2]->cX-0.30, grAir[2]->cY+0.15); + // for (int i=0; i<100; i++) + // if (grAir[i]->exist) + // grAir[i]->moveByTime(1); if (VCUnumTarget!=-1) { @@ -1370,7 +1333,7 @@ void Widget::msTickGraph() if (ASnumTarget!=-1) { -// grVCU->setPos1(grAir[ASnumTarget]->coordsL()); + // grVCU->setPos1(grAir[ASnumTarget]->coordsL()); QPointF p1 = grAzimutRLS->pos1(); @@ -1395,12 +1358,12 @@ void Widget::msTickGraph() } else { -// grVCU->setPos1(0,0); + // grVCU->setPos1(0,0); grAzimutRLSnormal->setPos0(0,0); grAzimutRLSnormal->setLength(0); } -// reCalculate(); + // reCalculate(); } @@ -1412,25 +1375,25 @@ void Widget::setGraph() gsc = new QGraphicsScene(this); gsc->setSceneRect(-11310,-11310,22610, 22610); // в гектаметрах -// QGraphicsRectItem *ri; -// ri = gsc->addRect(-8000,-8185,16000,16370); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-4000,-4090,8000,8180); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-2000,-2045,4000,4090); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-900,-920,1800,1840); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-450,-460,900,920); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-350,-360,700,720); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-250,-255,500,510); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-120,-125,240,250); -// ri->setPen(QPen(Qt::white)); -// ri = gsc->addRect(-60,-60,120,120); -// ri->setPen(QPen(Qt::white)); + // QGraphicsRectItem *ri; + // ri = gsc->addRect(-8000,-8185,16000,16370); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-4000,-4090,8000,8180); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-2000,-2045,4000,4090); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-900,-920,1800,1840); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-450,-460,900,920); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-350,-360,700,720); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-250,-255,500,510); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-120,-125,240,250); + // ri->setPen(QPen(Qt::white)); + // ri = gsc->addRect(-60,-60,120,120); + // ri->setPen(QPen(Qt::white)); grOwnSect = new graphicsArcItem(0,0, 1, ownSect.left, ownSect.right); @@ -1457,7 +1420,7 @@ void Widget::setGraph() gsc->addItem((QGraphicsItem*)grAzimutGUN); -// qreal tDU = ((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0)) *6/100; + // qreal tDU = ((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0)) *6/100; grAzimutKurs = new graphicsLineItem(); grAzimutKurs->setPos0(QPointF(0,0)); @@ -1478,12 +1441,8 @@ void Widget::setGraph() grAzimutRLS->setColor(Qt::blue); gsc->addItem((QGraphicsItem*)grAzimutRLS); - - - - - - + grCross = new graphicsCrossItem(grCrossX, grCrossY); + gsc->addItem((QGraphicsItem*)grCross); gV = new GraphicsViewMod(ui->lupa); gV->setFocusPolicy(Qt::NoFocus); @@ -1509,7 +1468,7 @@ void Widget::setGraph() grAzimutRLSnormal->setZValue(1500); gsc->addItem((QGraphicsItem*)grAzimutRLSnormal); -// slider + // slider gscRckt = new QGraphicsScene(this); gscRckt->setSceneRect(-10000, -10000, 20000, 20000); @@ -1538,8 +1497,8 @@ void Widget::setGraph() grRckt2->setPen(QPen(Qt::white)); grRckt2->setBrush(QBrush(Qt::SolidPattern)); grRckt2->setBrush(QBrush(QColor(0,0,200))); -// --! slider -// addTargets(); + // --! slider + // addTargets(); tmpGS = new QGraphicsScene(this); ui->graphicsView->setScene(tmpGS); @@ -1550,6 +1509,11 @@ void Widget::setGraph() ui->graphicsView->hide(); curPosition = 3012; + blackRect = new QGraphicsRectItem(); + blackRect->setRect(-1, -1, 801, 601); + blackRect->setPen(QPen(Qt::black)); + blackRect->setBrush(QBrush(Qt::SolidPattern)); + blackRect->setBrush(QBrush(QColor(0,0,0))); QGraphicsScene *tmpGS1 = new QGraphicsScene(this); @@ -1564,6 +1528,7 @@ void Widget::putDate() { QFont font("Consolas", 11, QFont::DemiBold); + keyPressEnabled = true; grLoadDate = new QGraphicsTextItem(); tmpGS->addItem(grLoadDate); grLoadDate->setDefaultTextColor(QColor(193, 193, 193)); @@ -1603,6 +1568,7 @@ void Widget::putLogin() grLoadLogin->setZValue(1000); grLoadLogin->setFont(font); strLoadLogin = "login: "; + keyPressEnabled = true; grLoadLogin->setPlainText(strLoadLogin); grLoadLogin->setPos(-3, curPosition); getFocus(); @@ -1643,8 +1609,8 @@ int Widget::findNextNum(int n) currentNum=i; return i; }; -// экстр. случай: нет свободных номеров, удаляем самую старую цель -// delete grAir[currentNum]; + // экстр. случай: нет свободных номеров, удаляем самую старую цель + // delete grAir[currentNum]; i=currentNum; grAir[i]->setNull(); grAir[i]->exist=true; @@ -1689,7 +1655,7 @@ void Widget::addTarget(int id, int aType, int gType, qreal cX, qreal cY, qreal c void Widget::addTargets() { - int num; + int num; num = findNextNum(currentNum); grAir[num]->exist = true; @@ -1713,7 +1679,7 @@ void Widget::addTargets() grAir[num]->setGraphicsEffect((QGraphicsEffect*)grAir[num]->coler); gsc->addItem((QGraphicsItem*)grAir[num]); -// targetsCount = 2; + // targetsCount = 2; } bool Widget::readFile() @@ -1891,9 +1857,11 @@ void Widget::writeFile() void Widget::initParams() { + systemHalt=false; + keyPressEnabled = false; int i; -// quickLoad = true; + // quickLoad = true; for (i=0; i<100; i++) { @@ -1909,6 +1877,9 @@ void Widget::initParams() basePoxod = 0; targetsCount = 0; + GAGmdu = GAGdu = GAGmdu0 = GAGdu0 = 0; + cvsRezhim = 2; + AS_t1 = AS_t2 = VCU_t1 = VCU_t2 = R_N_t1 = R_N_t2 = R_V_t1 = R_V_t2 = 0; rezhimGAGtxt[0] = QString::fromLocal8Bit("ГАГдв"); @@ -1922,8 +1893,8 @@ void Widget::initParams() -// splashIsOn=1; -// исходные данные по ракетам + // splashIsOn=1; + // исходные данные по ракетам openWidget = 0; rckV0 = 0; @@ -1939,7 +1910,7 @@ void Widget::initParams() rckAngle = 80; // 80 градусов - предельный угол вертикальной стрельбы -// + // zoomKoef[8] = 4.16; zoomKoef[7] = 2.06; zoomKoef[6] = 1.00; @@ -1956,7 +1927,7 @@ void Widget::initParams() for (i=0; i<100; i++) targetsIds[i]=0; -// + // if (!readFile()) { @@ -2029,13 +2000,14 @@ void Widget::initParams() } azimutKurs = 0; - + ugolGUN = 0; + grCrossX = grCrossY = 0; } void Widget::initBtnUIDs() { ui->pushButton->uid = 0x11; -// ui->pushButton_2->uid = 0x12; + // ui->pushButton_2->uid = 0x12; ui->pushButton_3->uid = 0x13; ui->pushButton_4->uid = 0x14; ui->pushButton_5->uid = 0x15; @@ -2065,15 +2037,15 @@ void Widget::switchWidget(int c) { switch (c) { - case 0x31: - ui->pushButton_4->setFocus(); - break; - case 0x32: - ui->lupa->setFocus(); - ui->pushButton->setFocus(); - break; - default: - break; + case 0x31: + ui->pushButton_4->setFocus(); + break; + case 0x32: + ui->lupa->setFocus(); + ui->pushButton->setFocus(); + break; + default: + break; } } @@ -2086,175 +2058,182 @@ void Widget::keyPressEvent ( QKeyEvent *e ) bool fl; fl = true; - - if (e->modifiers() & Qt::ControlModifier) + if (!keyPressEnabled) + return; + if ((splashIsOn==0)||(splashIsOn==4)||(splashIsOn==7)||(splashIsOn==8)) { - if ((c>=0x30) && (c<=0x39)) + + if (e->modifiers() & Qt::ControlModifier) { -// обрабатываем быстрый вызов Crtl+1x, Crtl+2x, Crtl+5x и Crtl+9x - if ((cOld==0x31)||(cOld==0x32)||(cOld==0x35)||(cOld==0x39)) + if ((c>=0x30) && (c<=0x39)) { - res = (cOld-0x30)*10+c-0x30; -// ui->lineEdit->setText(QString::number(res, 10)); - - switch (res) + // обрабатываем быстрый вызов Crtl+1x, Crtl+2x, Crtl+5x и Crtl+9x + if ((cOld==0x31)||(cOld==0x32)||(cOld==0x35)||(cOld==0x39)) { - case 21: - msVvodReper(); - break; - case 22: - msVvodTS(); - break; - case 23: - msGeoToGK(); - break; - case 24: - msGKToGeo(); - break; - case 25: - msGKToGK(); - break; - default: - break; + res = (cOld-0x30)*10+c-0x30; + // ui->lineEdit->setText(QString::number(res, 10)); + + switch (res) + { + case 21: + msVvodReper(); + break; + case 22: + msVvodTS(); + break; + case 23: + msGeoToGK(); + break; + case 24: + msGKToGeo(); + break; + case 25: + msGKToGK(); + break; + case 91: + rebootSlot(); + break; + default: + break; + } + + } - - + cOld = c; } - cOld = c; + else + cOld = 0; + + + + + } - else - cOld = 0; - - - - - } - - if (e->modifiers() & Qt::AltModifier) - { - switch (c) { + if (e->modifiers() & Qt::AltModifier) + { + switch (c) { case 0x31: - // ui->lineEdit->setText("Alt+1"); + // ui->lineEdit->setText("Alt+1"); ui->pushButton_3->setFocus(); releaseKeyboard(); break; case 0x32: - // ui->lineEdit->setText("Alt+2"); + // ui->lineEdit->setText("Alt+2"); ui->pushButton->setFocus(); releaseKeyboard(); break; default: break; + } } - } - if (splashIsOn==4) - { - if ((c == Qt::Key_Backspace)&&(strLoadDate.length()>0)) - strLoadDate = strLoadDate.left(strLoadDate.length()-1); - if ((c>=Qt::Key_0)&&(c<=Qt::Key_9)) - strLoadDate.append(QChar(c)); - if (c==Qt::Key_F11) - strLoadDate.append(" "); - - grLoadDate->setPlainText(strLoadDate); - - if ((c==Qt::Key_Enter)||(c==Qt::Key_Return)) + if (splashIsOn==4) { - QDateTime dt = QDateTime::fromString(strLoadDate, "ddMMyy HHmmss"); - if (dt.isValid()) + if ((c == Qt::Key_Backspace)&&(strLoadDate.length()>0)) + strLoadDate = strLoadDate.left(strLoadDate.length()-1); + if ((c>=Qt::Key_0)&&(c<=Qt::Key_9)) + strLoadDate.append(QChar(c)); + if (c==Qt::Key_F11) + strLoadDate.append(" "); + + grLoadDate->setPlainText(strLoadDate); + + if ((c==Qt::Key_Enter)||(c==Qt::Key_Return)) { - QGraphicsTextItem *ti = tmpGS->addText(dt.toString("ddd d MMM yyyy h:mm:ss"), QFont("Consolas", 11)); - ti->setDefaultTextColor(QColor(193, 193, 193)); + QDateTime dt = QDateTime::fromString(strLoadDate, "ddMMyy HHmmss"); + if (dt.isValid()) + { + QGraphicsTextItem *ti = tmpGS->addText(dt.toString("ddd d MMM yyyy h:mm:ss"), QFont("Consolas", 11)); + ti->setDefaultTextColor(QColor(193, 193, 193)); + curPosition+=12; + + ti->setPos(-3, curPosition); + ui->graphicsView->centerOn(0, curPosition-12-113); + + + ti = tmpGS->addText(QString::fromLocal8Bit("ПРОВЕРКА РАБОТОСПОСОБНОСТИ ЭВМ"), QFont("Consolas", 11)); + ti->setDefaultTextColor(QColor(193, 193, 193)); + curPosition+=24; + ti->setPos(-3, curPosition); + ui->graphicsView->centerOn(0, curPosition-24-113); + + splashIsOn = 5; + QTimer::singleShot(1000, this, SLOT(loadScreenTick())); + + + } + else + { + putDate(); + } + } + + fl = false; + + } + + + if (splashIsOn==7) + { + if (c == Qt::Key_NumLock || c==Qt::Key_N) strLoadLogin.append("n"); + if ((c==Qt::Key_Backspace)&&(strLoadLogin.length()>7)) + strLoadLogin = strLoadLogin.left(strLoadLogin.length()-1); + if ((c>=Qt::Key_0)&&(c<=Qt::Key_9)) + strLoadLogin.append(QChar(c)); + if ((c==Qt::Key_Enter)||(c==Qt::Key_Return)) + { + splashIsOn = 8; + grLoadPass = new QGraphicsTextItem(); + tmpGS->addItem(grLoadPass); + grLoadPass->setDefaultTextColor(QColor(193, 193, 193)); + grLoadPass->setZValue(1000); + grLoadPass->setFont(QFont("Consolas", 11)); + grLoadPass->setPlainText("pass: "); curPosition+=12; - - ti->setPos(-3, curPosition); - ui->graphicsView->centerOn(0, curPosition-12-113); - - - ti = tmpGS->addText(QString::fromLocal8Bit("ПРОВЕРКА РАБОТОСПОСОБНОСТИ ЭВМ"), QFont("Consolas", 11)); - ti->setDefaultTextColor(QColor(193, 193, 193)); - curPosition+=24; - ti->setPos(-3, curPosition); - ui->graphicsView->centerOn(0, curPosition-24-113); - - splashIsOn = 5; - QTimer::singleShot(1000, this, SLOT(loadScreenTick())); - - - } - else - { - putDate(); - } - } - - fl = false; - - } - - - if (splashIsOn==7) - { - if (c == Qt::Key_NumLock) strLoadLogin.append("n"); - if ((c==Qt::Key_Backspace)&&(strLoadLogin.length()>7)) - strLoadLogin = strLoadLogin.left(strLoadLogin.length()-1); - if ((c>=Qt::Key_0)&&(c<=Qt::Key_9)) - strLoadLogin.append(QChar(c)); - if ((c==Qt::Key_Enter)||(c==Qt::Key_Return)) - { - splashIsOn = 8; - grLoadPass = new QGraphicsTextItem(); - tmpGS->addItem(grLoadPass); - grLoadPass->setDefaultTextColor(QColor(193, 193, 193)); - grLoadPass->setZValue(1000); - grLoadPass->setFont(QFont("Consolas", 11)); - grLoadPass->setPlainText("pass: "); - curPosition+=12; - grLoadPass->setPos(-3, curPosition); - strLoadPass.clear(); - - } - grLoadLogin->setPlainText(strLoadLogin); - fl = false; - } else - - if (splashIsOn == 8) - { - if ((c==Qt::Key_Backspace)&&(strLoadPass.length()>0)) - strLoadPass = strLoadPass.left(strLoadPass.length()-1); - if ((c>=Qt::Key_0)&&(c<=Qt::Key_9)) - strLoadPass.append(QChar(c)); - if ((c==Qt::Key_Enter)||(c==Qt::Key_Return)) - { - if ((strLoadLogin==QString("login: n"))&&(strLoadPass==QString("7"))) - { - hideSplash(); - strLoadLogin.clear(); + grLoadPass->setPos(-3, curPosition); strLoadPass.clear(); + } - else + grLoadLogin->setPlainText(strLoadLogin); + fl = false; + } else + + if (splashIsOn == 8) { - strLoadLogin.clear(); - strLoadPass.clear(); - if (grLoadLogin) delete grLoadLogin; - if (grLoadPass) delete grLoadPass; - splashIsOn = 7; - putLogin(); + if ((c==Qt::Key_Backspace)&&(strLoadPass.length()>0)) + strLoadPass = strLoadPass.left(strLoadPass.length()-1); + if ((c>=Qt::Key_0)&&(c<=Qt::Key_9)) + strLoadPass.append(QChar(c)); + if ((c==Qt::Key_Enter)||(c==Qt::Key_Return)) + { + if ((strLoadLogin==QString("login: n"))&&(strLoadPass==QString("7"))) + { + hideSplash(); + strLoadLogin.clear(); + strLoadPass.clear(); + } + else + { + strLoadLogin.clear(); + strLoadPass.clear(); + if (grLoadLogin) delete grLoadLogin; + if (grLoadPass) delete grLoadPass; + splashIsOn = 7; + putLogin(); + } + + } + fl = false; + } - } - fl = false; + if ((c==Qt::Key_Left)&&(ui->pushButton_4->hasFocus())) fl = false; + if ((c==Qt::Key_Right)&&(ui->pushButton_14->hasFocus())) fl = false; + + if (fl) QWidget::keyPressEvent(e); } - - - if ((c==Qt::Key_Left)&&(ui->pushButton_4->hasFocus())) fl = false; - if ((c==Qt::Key_Right)&&(ui->pushButton_14->hasFocus())) fl = false; - - if (fl) QWidget::keyPressEvent(e); - } @@ -2348,9 +2327,13 @@ void Widget::createActions() connect(m6AutoZA, SIGNAL(triggered()), this, SLOT(msVvodAutoZA())); m7Default = new QAction(QString::fromLocal8Bit("Исходное сост"), this); + connect(m7Default, SIGNAL(triggered()), this, SLOT(on_pushButton_3_clicked())); m7BR = new QAction(QString::fromLocal8Bit("БР"), this); + connect(m7BR, SIGNAL(triggered()), this, SLOT(on_pushButton_4_clicked())); m7FK = new QAction(QString::fromLocal8Bit("ФК"), this); + connect(m7FK, SIGNAL(triggered()), this, SLOT(on_pushButton_5_clicked())); m7TRU = new QAction(QString::fromLocal8Bit("ТРУ"), this); + connect(m7TRU, SIGNAL(triggered()), this, SLOT(on_pushButton_6_clicked())); m7CU = new QAction(QString::fromLocal8Bit("ЦУ_N/ЦУ_B"), this); connect(m7CU, SIGNAL(triggered()), this, SLOT(msVvodCU_N())); m7CUDenied = new QAction(QString::fromLocal8Bit("Отказ от ВЦУ"), this); @@ -2363,6 +2346,7 @@ void Widget::createActions() m9View = new QAction(QString::fromLocal8Bit("Просмотр ЦАП/АЦП"), this); m0Reboot = new QAction(QString::fromLocal8Bit("Перезапуск ПО Ctrl+91"), this); + connect(m0Reboot, SIGNAL(triggered()), this, SLOT(rebootSlot())); m0Shutdown = new QAction(QString::fromLocal8Bit("Выключение Ctrl+92"), this); connect(m0Shutdown, SIGNAL(triggered()), this, SLOT(closeSlot())); } @@ -2399,10 +2383,10 @@ void Widget::createMenu() m1OperatorTren = mTrenag->addMenu(QString::fromLocal8Bit("Тренировка оператора")); la.clear(); la << m1Rezhim -// << m1ShowMark + // << m1ShowMark << m1ResetCourse -// << m1ResetMark -// << m1Timer + // << m1ResetMark + // << m1Timer ; m1OperatorTren->addActions(la); @@ -2499,26 +2483,26 @@ void Widget::catcher(int p) QMenu *m; switch (p) { - case 1: + case 1: - la = menu1->actions(); - menu1->setActiveAction(la.at(0)); - m = la.at(0)->menu(); - la = m->actions(); - m->setActiveAction(la.at(0)); - m->setFocus(); + la = menu1->actions(); + menu1->setActiveAction(la.at(0)); + m = la.at(0)->menu(); + la = m->actions(); + m->setActiveAction(la.at(0)); + m->setFocus(); - break; - case 2: - la = menu->actions(); - menu->setActiveAction(la.at(0)); - m = la.at(0)->menu(); - la = m->actions(); - m->setActiveAction(la.at(0)); - m->setFocus(); - break; - default: - break; + break; + case 2: + la = menu->actions(); + menu->setActiveAction(la.at(0)); + m = la.at(0)->menu(); + la = m->actions(); + m->setActiveAction(la.at(0)); + m->setFocus(); + break; + default: + break; } } @@ -2529,26 +2513,26 @@ void Widget::catchel(int p) switch (p) { - case 1: + case 1: - la = menu1->actions(); - menu1->setActiveAction(la.last()); + la = menu1->actions(); + menu1->setActiveAction(la.last()); - m = la.last()->menu(); - la = m->actions(); - m->setActiveAction(la.at(0)); - m->setFocus(); - break; - case 2: - la = menu->actions(); - menu->setActiveAction(la.last()); - m = la.last()->menu(); - la = m->actions(); - m->setActiveAction(la.at(0)); - m->setFocus(); - break; - default: - break; + m = la.last()->menu(); + la = m->actions(); + m->setActiveAction(la.at(0)); + m->setFocus(); + break; + case 2: + la = menu->actions(); + menu->setActiveAction(la.last()); + m = la.last()->menu(); + la = m->actions(); + m->setActiveAction(la.at(0)); + m->setFocus(); + break; + default: + break; } } @@ -2704,7 +2688,7 @@ void Widget::msVvod2z() void Widget::msVvodKCancel() { - // send Otkaz + // send Otkaz VCUnumTarget = -1; @@ -2717,7 +2701,7 @@ void Widget::msVvodKCancel() void Widget::msVvodKZapret() { - // send Zapret + // send Zapret ui->lineEdit_27->setText(QString::fromLocal8Bit("ДКЗС")); ui->lineEdit_26->setText(QString::fromLocal8Bit("ДКЗС")); @@ -2727,7 +2711,7 @@ void Widget::msVvodKZapret() void Widget::msVvodKKill() { -// send Kill + // send Kill ui->lineEdit_27->setText(QString::fromLocal8Bit("Убил")); ui->lineEdit_26->setText(QString::fromLocal8Bit("Убил")); QTimer::singleShot(500, ui->lineEdit_27, SLOT(clear())); @@ -2771,10 +2755,10 @@ void Widget::msVvodCU_N2(int NC, int z2Z) // VCUnumTarget = abs(NC)-1; ui->lineEdit_8->setText(QString::number(NC)); if (NC>0) ui->lineEdit_16->setText(QString::fromLocal8Bit("ЦУ")); - else ui->lineEdit_16->setText(QString::fromLocal8Bit("КЗС")); + else ui->lineEdit_16->setText(QString::fromLocal8Bit("КЗС")); -// reCalculate(); + // reCalculate(); // и соотв. характеристики цели } @@ -2848,7 +2832,7 @@ void Widget::reCalculate() -// ASnumTarget = 0; + // ASnumTarget = 0; if (ASnumTarget!=-1) { @@ -2918,15 +2902,15 @@ void Widget::reCalculate() grRckt1->setRect(R_N_t1*40, 0, R_N_t2*40, 30); grRckt2->setRect(R_V_t1*40, 0, R_V_t2*40, 30); -// ui->lineEdit_5->setText(QString::number(AS_par)); + // ui->lineEdit_5->setText(QString::number(AS_par)); -// if (basePoxod==2) -// { -// ui->lineEdit_7->setText("0"); -// ui->lineEdit_6->setText("0"); -// } -// else -// if (basePoxod==1) + // if (basePoxod==2) + // { + // ui->lineEdit_7->setText("0"); + // ui->lineEdit_6->setText("0"); + // } + // else + // if (basePoxod==1) { ui->lineEdit_7->setText(QString::number(AS_t1, 'f', 1)); ui->lineEdit_6->setText(QString::number(AS_t2, 'f', 1)); @@ -2936,7 +2920,7 @@ void Widget::reCalculate() else { ui->lineEdit_4->setText("0"); - // ui->lineEdit_5->setText("0"); + // ui->lineEdit_5->setText("0"); ui->lineEdit_6->setText("0"); ui->lineEdit_7->setText("0"); @@ -2983,7 +2967,8 @@ void Widget::reCalculate() mdu = int((angle)*3000) % 6000; if (mdu<0) mdu+=6000; du = mdu / 100; mdu %= 100; - ui->lineEdit_24->setText(QString::number(du)); + if (du>30) {du=du-59;mdu=100-mdu; str = "-";} else str=""; + ui->lineEdit_24->setText(str+QString::number(du)); ui->lineEdit_25->setText(QString::number(mdu)); ui->lineEdit_18->setText(QString::number(VCU_t1, 'f', 1)); @@ -3003,12 +2988,7 @@ void Widget::reCalculate() ui->lineEdit_17->setText("0"); ui->lineEdit_18->setText("0"); - } - - - - } @@ -3049,15 +3029,37 @@ void Widget::on_pushButton_11_clicked() msVvod2z(); } - -void Widget::on_pushButton_4_clicked() +void Widget::on_pushButton_3_clicked() { + ui->lineEdit->setText(QString::fromLocal8Bit("ИСХ")); + cvsRezhim = 1; } +void Widget::on_pushButton_4_clicked() +{ + ui->lineEdit->setText(QString::fromLocal8Bit("БР")); + cvsRezhim = 2; +} + + +void Widget::on_pushButton_5_clicked() +{ + ui->lineEdit->setText(QString::fromLocal8Bit("ФК")); + cvsRezhim = 3; +} + +void Widget::on_pushButton_6_clicked() +{ + ui->lineEdit->setText(QString::fromLocal8Bit("ТРУ")); + cvsRezhim = 4; + // showSplash(15); +} + + void Widget::on_comboBox_2_currentIndexChanged(int index) { -// смена Zoom + // смена Zoom QString str; switch(index) { @@ -3093,46 +3095,49 @@ void Widget::on_comboBox_2_currentIndexChanged(int index) } ui->label->setText(str); - qreal t = 1/(gV->scMeter)*zoomKoef[index]; - globalScale = t; + qreal t = zoomKoef[index]/(gV->scMeter); + qreal t_1 = 1/t; + gV->scale(t, t); gV->scMeter = zoomKoef[index]; + qreal z1 = 1/zoomKoef[index]; - grOwnSect->setRadius(223/zoomKoef[index]); + grOwnSect->setRadius(223*z1); - grKzsSect->setRadius(223/zoomKoef[index]); + grKzsSect->setRadius(223*z1); - grAzimutGUN->setLength(28/zoomKoef[index]); - grAzimutGUN->setWidth(5/zoomKoef[index]); - grAzimutGUN->setTextSize(10/zoomKoef[index]); - grAzimutGUN->setTextSize(10/zoomKoef[index], 1); - grAzimutGUN->setTextPos(QPointF(-10/zoomKoef[index], -20/zoomKoef[index])); - grAzimutGUN->setTextPos(QPointF(-10/zoomKoef[index], -9/zoomKoef[index]), 1); + grAzimutGUN->setLength(28*z1); + grAzimutGUN->setWidth(5*z1); + grAzimutGUN->setTextSize(10*z1); + grAzimutGUN->setTextSize(10*z1, 1); + grAzimutGUN->setTextPos(QPointF(-10*z1, -20*z1)); + grAzimutGUN->setTextPos(QPointF(-10*z1, -9*z1), 1); qreal tDU = (qreal((GAGdu-GAGdu0)*100+(GAGmdu-GAGmdu0))) *6/100; - grAzimutKurs->setPos0(QPointF(-200*sin((azimutKurs+tDU)*M_PI/180)/zoomKoef[index], -200*cos((azimutKurs+tDU)*M_PI/180)/zoomKoef[index])); + grAzimutKurs->setPos0(QPointF(-200*sin((azimutKurs+tDU)*M_PI/180)*z1, -200*cos((azimutKurs+tDU)*M_PI/180)*z1)); grAzimutKurs->setAngle(-azimutKurs-tDU+90); - grAzimutKurs->setWidth(3/zoomKoef[index]); - grAzimutKurs->setLength(20/zoomKoef[index]); - grAzimutKurs->setTextPos(QPointF((-185*sin((azimutKurs+tDU)*M_PI/180)+10)/zoomKoef[index], -185*cos((azimutKurs+tDU)*M_PI/180)/zoomKoef[index])); - grAzimutKurs->setTextSize(10/zoomKoef[index]); + grAzimutKurs->setWidth(3*z1); + grAzimutKurs->setLength(20*z1); + grAzimutKurs->setTextPos(QPointF((-185*sin((azimutKurs+tDU)*M_PI/180)+10)*z1, -185*cos((azimutKurs+tDU)*M_PI/180)*z1)); + grAzimutKurs->setTextSize(10*z1); - grAzimutRLS->setLength(219/zoomKoef[index]); - grAzimutRLS->setWidth(2/zoomKoef[index]); + grAzimutRLS->setLength(219*z1); + grAzimutRLS->setWidth(2*z1); for (int i=0; i<100; i++) { -// if (grAir[i]->exist) + // if (grAir[i]->exist) { - grAir[i]->setScaleIndex(1/zoomKoef[index]); - grAir[i]->scale(1/t,1/t); + grAir[i]->setScaleIndex(z1); + grAir[i]->scale(t_1,t_1); } } - grVCU->setWidth(1/zoomKoef[index]); - grAzimutRLSnormal->setWidth(1/zoomKoef[index]); + grVCU->setWidth(z1); + grAzimutRLSnormal->setWidth(z1); + grCross->setScaleIndex(z1); } @@ -3140,22 +3145,20 @@ void Widget::on_comboBox_currentIndexChanged(int index) { for (int i=0; i<100; i++) { - grAir[i]->setViewSettings(index); + grAir[i]->setViewSettings(index); } } void Widget::showSplash(int d) { - - - - if (d==1) + // qDebug("show splash%d", d); + if (d==1) // выключена { loadingPos = 0; ui->graphicsView->centerOn(0,loadingPos); ui->graphicsView->show(); } - if (d==0) + if (d==0) // Работа с ЦВС { if (loadScreenTmr->isActive()) loadScreenTmr->stop(); loadingPos=0; @@ -3171,8 +3174,85 @@ void Widget::showSplash(int d) ui->graphicsView->show(); loadingPos = 1100; loadScreenTmr->start(300); -// d=0; -// ui->graphicsView->hide(); + // d=0; + // ui->graphicsView->hide(); + } + if (d == 13) // убили ЦВС + { + // qDebug("code 13"); + udpOptServer->abort(); + udpSocket->abort(); + udpOptServer2->abort(); + tmpGS->clear(); + tmpGS->addPixmap(QPixmap(":/fon/pics/dead_end.png")); + ui->graphicsView->show(); + ui->graphicsView->centerOn(0,0); + + } + if (d == 15) // штатное выключение - выгрузка ОС + { + + if (openWidget) + openWidget->close(); + udpOptServer->abort(); + // udpSocket->abort(); + udpOptServer2->abort(); + tmpGS->clear(); + tmpGS->addPixmap(QPixmap(":/fon/pics/shutdown.png")); + tmpGS->addItem((QGraphicsItem*)blackRect); + + QRectF rF = blackRect->rect(); + rF.moveTop(92); + blackRect->setRect(rF); + ui->graphicsView->show(); + ui->graphicsView->centerOn(0,0); + loadScreenTmr->start(1000); + } + + if (d==0) + { + + ui->pushButton->show(); + ui->comboBox->show(); + ui->comboBox_2->show(); + + ui->pushButton_3->show(); + ui->pushButton_4->show(); + ui->pushButton_5->show(); + ui->pushButton_6->show(); + ui->pushButton_7->show(); + ui->pushButton_8->show(); + ui->pushButton_9->show(); + ui->pushButton_10->show(); + ui->pushButton_11->show(); + ui->pushButton_12->show(); + ui->pushButton_13->show(); + ui->pushButton_14->show(); + + menu->show(); + menu1->show(); + } + else + { + ui->pushButton->hide(); + ui->comboBox->hide(); + ui->comboBox_2->hide(); + + menu->hide(); + menu1->hide(); + + ui->pushButton_3->hide(); + ui->pushButton_4->hide(); + ui->pushButton_5->hide(); + ui->pushButton_6->hide(); + ui->pushButton_7->hide(); + ui->pushButton_8->hide(); + ui->pushButton_9->hide(); + ui->pushButton_10->hide(); + ui->pushButton_11->hide(); + ui->pushButton_12->hide(); + ui->pushButton_13->hide(); + ui->pushButton_14->hide(); } splashIsOn = d; @@ -3182,14 +3262,29 @@ void Widget::loadScreenTick() { QString strTab; QGraphicsTextItem *ti; + QRectF rF; + static int shDwn = 0; + int shDwn_coords[30] = { 123, 141, 158, 173, 190, 221, 238, 254, 271, 287, + 302, 317, 334, 351, 366, 383, 399, 415, 431, 447, + 463, 479, 495, 510, 526, 541, 560, 580, 580, 580 }; - if (quickLoad) - { + if (quickLoad && splashIsOn!=15) showSplash(0); + if (splashIsOn==15) + { + if (quickLoad) + shDwn=27; + keyPressEnabled=false; + rF = blackRect->rect(); + rF.moveTop(shDwn_coords[shDwn]); + blackRect->setRect(rF); + shDwn++; + if (shDwn>=27) { loadScreenTmr->stop(); systemHalt=true;} } if (splashIsOn==3) { + keyPressEnabled=false; ui->graphicsView->centerOn(0, loadingPos); loadingPos+=loadingShift; // qDebug("%d\n", loadingPos); @@ -3204,6 +3299,7 @@ void Widget::loadScreenTick() } if (splashIsOn==5) { + keyPressEnabled=false; ti = tmpGS->addText(QString::fromLocal8Bit(" БТ23-206 исправен"), QFont("Consolas", 11)); ti->setDefaultTextColor(QColor(193, 193, 193)); curPosition+=12; @@ -3257,10 +3353,10 @@ void Widget::loadScreenTick() splashIsOn = 6; QTimer::singleShot(1000, this, SLOT(loadScreenTick())); - } else - if (splashIsOn==6) - { -// if (loadScreenTmr->isActive()) loadScreenTmr->stop(); + } + if (splashIsOn==6) { + // if (loadScreenTmr->isActive()) loadScreenTmr->stop(); + keyPressEnabled=false; curPosition+=36; ti = tmpGS->addText(QString::fromLocal8Bit("ЦЕЛОСТНОСТЬ ПО НЕ НАРУШЕНА"), QFont("Consolas", 11)); @@ -3277,17 +3373,14 @@ void Widget::loadScreenTick() QTimer::singleShot(5000, this, SLOT(loadScreenTick())); - } else - if (splashIsOn==7) - { - - putLogin(); } - + if (splashIsOn==7) + putLogin(); } void Widget::changeOpenWidget(QObject *p) { + if (openWidget) openWidget->close(); openWidget = (QWidget*)p; } @@ -3304,6 +3397,43 @@ void Widget::focusSS(QWidget *old, QWidget *now) void Widget::on_pushButton_9_clicked() { - ui->radioButton_set1->setChecked(ui->pushButton_9->isChecked()); + ui->radioButton_set1->setChecked(ui->pushButton_9->isChecked()); + grCross->setVisible(ui->pushButton_9->isChecked()); } + +void Widget::MyClose() { + showSplash(15); +} + +void Widget::rebootSlot() +{ + + static int flag = 1; + + flag++; + + + if (flag==2) + { + udpSocket->abort(); + udpNewTask->abort(); + udpOptServer->abort(); + udpOptServer2->abort(); + udpSend->abort(); + udpCU->abort(); + udpTarget->abort(); + + tmrReport->stop(); + tmrSyncr->stop(); + + writeFile(); + + + QString program = "c:/Shilka_exe/sh3.exe"; + QStringList arguments = (QStringList() << QString::number(currentTaskNum)); + QProcess *myProcess = new QProcess(this); + myProcess->startDetached(program, arguments); + QTimer::singleShot(1000, this, SLOT(close())); + } +} diff --git a/widget.h b/widget.h index 5aab25e..87cf2e6 100644 --- a/widget.h +++ b/widget.h @@ -16,6 +16,7 @@ #include "graphicsviewmod.h" #include "graphicsarcitem.h" #include "graphicslineitem.h" +#include "graphicscrossitem.h" #include #include "grairobject.h" @@ -180,6 +181,10 @@ public: void initParams(); void setGraph(); + void setGrabFocus(int d); + QTimer *tmrFocus; + QTimer *tmrSyncr, *tmrReport; + void setVCU(int id); void clearVCU(); int findTargetFromId(int id); @@ -216,7 +221,7 @@ public: bool resetCVS[3]; int splashIsOn; - + bool systemHalt; bool meteoAvtonom, meteoSred; void setMeteo(bool m1, bool m2); @@ -228,6 +233,7 @@ public: void setRezhimGAG(int pos); int rezhimZerk; + int cvsRezhim; T_geoPoint ts, reper; T_metAv metAv; @@ -264,10 +270,6 @@ public: qreal AS_t1, AS_t2, VCU_t1, VCU_t2, R_N_t1, R_N_t2, R_V_t1, R_V_t2; qreal AS_par; -// qreal grCrossAzim, grCrossDist; -// QGraphicsItem grCross; - - qreal azimutRLS; graphicsLineItem *grAzimutRLS; graphicsLineItem *grAzimutRLSnormal; @@ -285,6 +287,8 @@ public: graphicsLineItem *grVCU; int lastKO; + graphicsCrossItem *grCross; + qreal grCrossX, grCrossY; bool autoZAdefault; @@ -297,6 +301,7 @@ public: QTimer *loadScreenTmr; + QGraphicsRectItem *blackRect; int loadingPos; int loadingShift; @@ -317,7 +322,7 @@ public slots: void switchWidget(int); void showSplash(int d=1); - void hideSplash() {showSplash(0);}; + void hideSplash() {showSplash(0);} void msMeteoSredShow(void); void msVvodMA(void); @@ -360,6 +365,8 @@ public slots: void closeSlot(); + void MyClose(); + void rebootSlot(); void reCalculate(); void processSendingDatagrams(QByteArray buf, int port=45460); @@ -398,6 +405,9 @@ private slots: void on_comboBox_2_currentIndexChanged(int index); void on_pushButton_4_clicked(); + void on_pushButton_3_clicked(); + void on_pushButton_5_clicked(); + void on_pushButton_6_clicked(); void on_comboBox_currentIndexChanged(int index); @@ -418,7 +428,7 @@ private slots: private: void putDate(); - + bool keyPressEnabled; virtual void keyPressEvent ( QKeyEvent * e ); Ui::Widget *ui;