CTrackList::CTrackList(QWidget *parent, double tz) : QDialog(parent), ui(new Ui::CTrackList) { ui->setupUi(this); setWindowFlags(((windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowCloseButtonHint)); QStandardItemModel *model = new QStandardItemModel(0, 4); model->setHeaderData(0, Qt::Horizontal, tr("Name")); model->setHeaderData(1, Qt::Horizontal, tr("From")); model->setHeaderData(2, Qt::Horizontal, tr("To")); model->setHeaderData(3, Qt::Horizontal, tr("Steps")); for (int i = 0; i < tTracking.count(); i++) { QStandardItem *item = new QStandardItem; item->setText(tTracking[i].objName); item->setCheckable(true); if (tTracking[i].show) { item->setCheckState(Qt::Checked); } model->setItem(i, 0, item); item = new QStandardItem; item->setText(getStrDate(tTracking[i].jdFrom, tz) + " " + getStrTime(tTracking[i].jdFrom, tz, true)); model->setItem(i, 1, item); item = new QStandardItem; item->setText(getStrDate(tTracking[i].jdTo, tz) + " " + getStrTime(tTracking[i].jdTo, tz, true)); model->setItem(i, 2, item); item = new QStandardItem; item->setText(QString::number(tTracking[i].tPos.count())); model->setItem(i, 3, item); } ui->treeView->setModel(model); ui->treeView->setRootIsDecorated(false); ui->treeView->header()->resizeSection(0, 100); ui->treeView->header()->resizeSection(1, 120); ui->treeView->header()->resizeSection(2, 120); ui->treeView->header()->resizeSection(3, 60); QShortcut *sh1 = new QShortcut(QKeySequence(Qt::Key_Delete), ui->treeView, 0, 0, Qt::WidgetShortcut); connect(sh1, SIGNAL(activated()), this, SLOT(slotDeleteItem())); }
void CMoonCal::updateTime() /////////////////////////// { QString months[12] = {tr("January (I)"), tr("February (II)"), tr("March (III)"), tr("April (IV)"), tr("May (V)"), tr("June (VI)"), tr("July (VII)"), tr("August (IIX)"), tr("September (IX)"), tr("October (X)"), tr("November (XI)"), tr("December (XII)"), }; QDateTime t; QDateTime t1(QDate(m_year, m_month, 1)); int cnt = 7 * 6; // first day int fd = (t1.date().dayOfWeek() - 1); cnt += fd; t.setDate(QDate(m_year, m_month, 1)); t.setTime(QTime(12, 0, 0)); t = t.addDays(-fd); ui->label->setText(QString("%1").arg(m_year)); ui->label_2->setText(QString("%1").arg(months[m_month - 1])); int x = 0; int y = 0; float w = (m_img->width() - 1) / 7.f; float h = (m_img->height() - 1) / 6.f; double jd = jdGetJDFrom_DateTime(&t); m_img->fill(Qt::black); QPainter p(m_img); p.setRenderHint(QPainter::Antialiasing); float size = 0.5 * qMin(w, h) * 0.8f; for (int i = 0; i < cnt; i++) { QRect r; QRect rb; jdConvertJDTo_DateTime(jd, &t); int d = t.date().day(); r.setRect(x * w + 2, y * h + 2, w - 4, h - 4); if (m_curDay == t.date().day() && m_curMonth == t.date().month() && m_curYear == t.date().year()) p.setPen(QPen(QColor(255, 255, 0), 3)); else p.setPen(QColor(255, 255, 255)); p.setBrush(Qt::NoBrush); p.drawRect(r); CAstro a; orbit_t o; orbit_t s; mapView_t view = m_view; SKPOINT pt; view.flipX = false; view.flipY = false; view.jd = jd; a.setParam(&view); a.calcPlanet(PT_MOON, &o); a.calcPlanet(PT_SUN, &s); CRts cRts; rts_t rts; cRts.setLowPrec(); if (m_isMoon) cRts.calcOrbitRTS(&rts, PT_MOON, MO_PLANET, &view); else cRts.calcOrbitRTS(&rts, PT_SUN, MO_PLANET, &view); pt.sx = r.center().x(); pt.sy = r.center().y(); rb = r; r.setRect(pt.sx - size * 0.98f, pt.sy - size * 0.98f, size * 2 * 0.98f, size * 2 * 0.98f); if (m_isMoon) { p.drawPixmap(r, *m_moon); p.save(); cPlanetRenderer.drawPhase(&o, &s, &p, &pt, &view, size, size, false); p.restore(); } else { p.drawPixmap(r, *m_sun); } if (t.date().month() != m_month) p.setPen(QColor(128, 128, 128)); else p.setPen(QColor(255, 255, 255)); p.setFont(QFont("arial", 12, QFont::Bold)); p.drawText(rb.left() + 3, rb.top() + 3, 30, 30, Qt::AlignCenter, QString("%1").arg(d)); p.setFont(QFont("arial", 10)); p.setPen(QColor(255, 255, 255)); float tz = view.geo.tz; QString str; switch (rts.flag) { case RTS_ERR: str = tr("Rise/Set solve ERROR!!!"); break; case RTS_CIRC: str = tr("Object is circumpolar.\n"); break; case RTS_NONV: str = tr("Object is never visible!\n"); break; case RTS_DONE: if ((rts.rts & RTS_T_RISE) == RTS_T_RISE) str = tr("Rise : ") + getStrTime(rts.rise, tz, true) + "\n"; if ((rts.rts & RTS_T_SET) == RTS_T_SET) str += tr("Set : ") + getStrTime(rts.set, tz, true); break; } p.setFont(QFont("arial", 8)); p.setPen(QColor(255, 255, 255)); p.drawText(rb.x() + 5, rb.y() + 5, rb.width() - 10, rb.height() - 10, Qt::AlignLeft | Qt::AlignBottom, QString("%1").arg(str)); jd += 1; x++; if ((x % 7) == 0) { x = 0; y++; } } update(); }
CRestoreTM::CRestoreTM(QWidget *parent) : QDialog(parent), ui(new Ui::CRestoreTM) { ui->setupUi(this); QStandardItemModel *m = new QStandardItemModel(0, 4); m->setHeaderData(0, Qt::Horizontal, QObject::tr("Date/Time")); m->setHeaderData(1, Qt::Horizontal, QObject::tr("Desc.")); m->setHeaderData(2, Qt::Horizontal, QObject::tr("R.A.")); m->setHeaderData(3, Qt::Horizontal, QObject::tr("Dec.")); ui->treeView->sortByColumn(0); ui->treeView->setSortingEnabled(true); SkFile f(QStandardPaths::writableLocation(QStandardPaths::DataLocation) + "/data/timemarks/timemarks.dat"); QTextStream s(&f); int row = 0; if (f.open(SkFile::ReadOnly | SkFile::Text)) { QStringList list; while (!s.atEnd()) { QString line = s.readLine(); list = line.split(';'); if (list.count() == 2 || list.count() == 4) { item_t *i = new item_t; i->desc = list.at(0); i->jd = list.at(1).toDouble(); CTimeMarkItem *i0 = new CTimeMarkItem; QStandardItem *i1 = new QStandardItem; CTimeMarkItemRD *i2 = new CTimeMarkItemRD; CTimeMarkItemRD *i3 = new CTimeMarkItemRD; i0->setText(getStrDate(i->jd, 0) + " " + getStrTime(i->jd, 0)); i0->setData((qint64)i); i1->setText(i->desc); if (list.count() == 4) { i->ra = D2R(list.at(2).toDouble()); i->dec = D2R(list.at(3).toDouble()); i2->setText(getStrRA(i->ra)); i2->setData(i->ra); i3->setText(getStrDeg(i->dec)); i3->setData(i->dec); } else { i->ra = CM_UNDEF; i->dec = CM_UNDEF; i2->setText(tr("N/A")); i2->setData(CM_UNDEF); i3->setText(tr("N/A")); i3->setData(CM_UNDEF); } m->setItem(row, 0, i0); m->setItem(row, 1, i1); m->setItem(row, 2, i2); m->setItem(row, 3, i3); row++; } } } ui->treeView->setModel(m); ui->treeView->header()->resizeSection(0, 140); QShortcut *sh1 = new QShortcut(QKeySequence(Qt::Key_Delete), ui->treeView, 0, 0, Qt::WidgetShortcut); connect(sh1, SIGNAL(activated()), this, SLOT(slotDelete())); }
int main() { initReseau(); char strConfig[20]; /* Recuperation des valeurs du fichier de config */ FILE * ConfigFile = ChargerFichierConfig("config_coordinateur.txt"); int ret; if((ret = getValue(ConfigFile,"PORT",strConfig)) != 1) { printf("Erreur dans la lecture de la configuration PORT! [%i]",ret); return -1; } g_Config.portEcoute = atoi(strConfig); printf("Coordinateur : \n"); printf("Ecoute sur : %i\n", g_Config.portEcoute); printf("\n"); SocketEcoute = creerSocketUdpServer ( g_Config.portEcoute); if(SocketEcoute > 0) { printf("Creation de la socket d'ecoute sur le port %i reussie !\n", g_Config.portEcoute); } else { printf("Erreur lors de la creation de la socket ! %i",SocketEcoute); return -1; } pthread_t Thread_waitForClient ;//, Thread_SendMoyenne; pthread_create(&Thread_waitForClient,0,waitForClient,(void *)&SocketEcoute); while(1) { ListeChainee * elemSonde = ListeSondes; int b_MesuresOk = 1; while(elemSonde != NULL) { TypeSonde * sonde = ((TypeSonde *)elemSonde->data); if(sonde->NouvelleVal == 0 && (sonde->TimeLastVal > (time(NULL) - SEUIL_DELAIS_SONDE ))) // Si on a pas de mesure et que la derniere date d'apres le seuil { // printf("Attente"); b_MesuresOk = 0; // On attend encore } elemSonde = elemSonde->next; } if(b_MesuresOk) { elemSonde = ListeSondes; while(elemSonde != NULL) { TypeSonde * sonde = ((TypeSonde *)elemSonde->data); sonde->NouvelleVal = 0; if(sonde->Moyenne > SEUIL_MAX_TEMP && sonde->AlerteAffichee == 0) { char Time[10]; getStrTime(Time); sonde->AlerteAffichee = 1; printf("%s ATTENTION sur la sonde: %i, routeur: %i, temperature: %3.3f\n",Time,sonde->id,sonde->id_routeur,sonde->Moyenne); } elemSonde = elemSonde->next; } } MySleep(1000); } deInitReseau(); return 0; }
void CEphList::on_pushButton_4_clicked() //////////////////////////////////////// { QList <int> columns; QStringList strCol; int obj; int type; bool isUT; double tz; double jdFrom; double jdTo; double step = 1; QString name; QListWidgetItem *com; QList <tableRow_t> rows; for (int i = 0; i < EL_COLUMN_COUNT; i++) { QListWidgetItem *item = ui->listWidget_2->item(i); if (item->checkState() == Qt::Checked && (item->flags() & Qt::ItemIsEnabled)) { columns.append(item->data(Qt::UserRole + 1).toInt()); } } if (columns.count() == 0) { msgBoxError(this, tr("There is no selected column!!!")); return; } switch (ui->tabWidget->currentIndex()) { case 0: type = MO_PLANET; obj = ui->listWidget->currentRow(); if (!showNoObjectSelected(obj)) return; break; case 1: type = MO_COMET; obj = ui->listWidget_3->currentRow(); if (!showNoObjectSelected(obj)) return; com = ui->listWidget_3->item(obj); obj = com->data(Qt::UserRole + 1).toInt(); break; case 2: type = MO_ASTER; obj = ui->listWidget_4->currentRow(); if (!showNoObjectSelected(obj)) return; com = ui->listWidget_4->item(obj); obj = com->data(Qt::UserRole + 1).toInt(); break; } isUT = ui->checkBox->isChecked(); if (isUT) tz = 0; else tz = m_view.geo.tz; QDateTime dt; dt = ui->dateTimeEdit->dateTime(); jdFrom = jdGetJDFrom_DateTime(&dt); dt = ui->dateTimeEdit_2->dateTime(); jdTo = jdGetJDFrom_DateTime(&dt); for (int i = 0; i < columns.count(); i++) { QString str = cELColumn[columns[i]]; strCol.append(str); } if (jdFrom >= jdTo) { msgBoxError(this, tr("Invalid date/time range!!!")); return; } double mul; switch (ui->comboBox->currentIndex()) { case 0: mul = JD1SEC * 60; break; case 1: mul = JD1SEC * 3600; break; case 2: mul = 1; break; } step = ui->spinBox->value() * mul; int count = (jdTo - jdFrom) / step; if (count > 1000) { if (QMessageBox::No == msgBoxQuest(this, tr("Calculation 1000+ positions. Do you want to continue?"))) return; } for (double jd = jdFrom; jd <= jdTo; jd += step) { bool isMoon = false; tableRow_t row; orbit_t o; m_view.jd = jd - tz; cAstro.setParam(&m_view); switch (type) { case MO_PLANET: cAstro.calcPlanet(obj, &o); name = cAstro.getName(obj); isMoon = (obj == PT_MOON); break; case MO_COMET: comSolve(&tComets[obj], m_view.jd); name = tComets[obj].name; o = tComets[obj].orbit; break; case MO_ASTER: astSolve(&tAsteroids[obj], m_view.jd); name = tAsteroids[obj].name; o = tAsteroids[obj].orbit; break; } for (int j = 0; j < columns.count(); j++) { QString str; double ra2000 = o.lRD.Ra; double dec2000 = o.lRD.Dec; precess(&ra2000, &dec2000, m_view.jd, JD2000); switch (columns[j]) { case 0: str = QString::number(m_view.jd, 'f', 6); break; case 1: str = getStrDate(m_view.jd, tz); break; case 2: str = getStrTime(m_view.jd, tz); break; case 3: str = getStrMag(o.mag); break; case 4: str = QString::number(o.phase, 'f', 3); break; case 5: str = QString::number(R2D(o.PA), 'f', 1) + "°"; break; case 6: str = QString::number(o.sx, 'f', 2) + "\""; break; case 7: str = QString::number(o.sy, 'f', 2) + "\""; break; case 8: str = getStrRA(o.lRD.Ra); break; case 9: str = getStrDeg(o.lRD.Dec); break; case 10: str = getStrRA(ra2000); break; case 11: str = getStrDeg(dec2000); break; case 12: str = getStrRA(o.gRD.Ra); break; case 13: str = getStrDeg(o.gRD.Dec); break; case 14: str = getStrDeg(o.lAzm); break; case 15: str = getStrDeg(o.lAlt); break; case 16: if (!isMoon) { str = QString::number(o.R, 'f', 6) + " AU"; } else { str = QString::number(o.r * EARTH_DIAM) + tr(" Km"); } break; case 17: if (!isMoon) { str = QString::number(o.r, 'f', 6) + " AU"; } else { str = tr("N/A"); } break; case 18: str = ((o.elongation >= 0) ? "+" : "") + QString::number(R2D(o.elongation), 'f', 2) + "°"; break; case 19: str = getStrDeg(o.hLon); break; case 20: str = getStrDeg(o.hLat); break; case 21: str = QString::number(o.hRect[0], 'f', 6) + " AU"; break; case 22: str = QString::number(o.hRect[1], 'f', 6) + " AU"; break; case 23: str = QString::number(o.hRect[2], 'f', 6) + " AU"; break; case 24: str = QString::number(o.light * 24. * 60., 'f', 2) + tr(" mins."); break; } row.row.append(str); } rows.append(row); } CEphTable dlg(this, name, strCol, rows); dlg.exec(); }