示例#1
0
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()));
}
示例#2
0
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();
}
示例#3
0
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()));
}
示例#4
0
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;
}
示例#5
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();
}