示例#1
0
bool KEntryMap::revertEntry(const QByteArray& group, const QByteArray& key, KEntryMap::SearchFlags flags)
{
    Q_ASSERT((flags & KEntryMap::SearchDefaults) == 0);
    Iterator entry = findEntry(group, key, flags);
    if (entry != end()) {
        //qDebug() << "reverting" << entry.key() << " = " << entry->mValue;
        if (entry->bReverted) { // already done before
            return false;
        }

        KEntryKey defaultKey(entry.key());
        defaultKey.bDefault = true;
        //qDebug() << "looking up default entry with key=" << defaultKey;
        const ConstIterator defaultEntry = constFind(defaultKey);
        if (defaultEntry != constEnd()) {
            Q_ASSERT(defaultEntry.key().bDefault);
            //qDebug() << "found, update entry";
            *entry = *defaultEntry; // copy default value, for subsequent lookups
        } else {
            entry->mValue = QByteArray();
        }
        entry->bDirty = true;
        entry->bReverted = true; // skip it when writing out to disk

        //qDebug() << "Here's what we have now:" << *this;
        return true;
    }
    return false;
}
	RadiobuttonsGroup *reg(const QString &group) {
		Parent::const_iterator i = constFind(group);
		if (i == cend()) {
			i = insert(group, new RadiobuttonsGroup(group));
		}
		return i.value();
	}
示例#3
0
TriggersResults::TrigRes TriggersResults::GetResult(quint32 TrigType, const QDate& RefDate)const {
    Q_D(const TriggersResults);
    const auto Tempmap = d->m_Results.value(TrigType, nullptr);
	if (Tempmap) {
		auto MapIter = Tempmap->constFind(RefDate);
		if (MapIter == Tempmap->constEnd()) return TrigRes::trNA;
		return (MapIter.value() ? TrigRes::trTrue : TrigRes::trFalse);
	}
	return TrigRes::trNA;
}
inline optional<QVariant> objectMember(const QVariant& value, const char* key) {
    auto map = value.toMap();
    auto iter = map.constFind(key);

    if (iter != map.constEnd()) {
        return iter.value();
    } else {
        return {};
    }
}
示例#5
0
bool OsmAnd::MapObject::containsTypeSlow(const QString& tag, const QString& value, bool checkAdditional /*= false*/) const
{
    const auto citByTag = encodingDecodingRules->encodingRuleIds.constFind(tag);
    if (citByTag == encodingDecodingRules->encodingRuleIds.cend())
        return false;

    const auto citByValue = citByTag->constFind(value);
    if (citByValue == citByTag->cend())
        return false;

    const auto typeRuleId = *citByValue;
    return (checkAdditional ? additionalTypesRuleIds : typesRuleIds).contains(typeRuleId);
}
AndroidCamcorderProfile AndroidCamcorderProfile::get(jint cameraId, Quality quality)
{
    const QString key = profileKey().arg(cameraId).arg(quality);
    QMap<QString, QJNIObjectPrivate>::const_iterator it = g_camcorderProfiles->constFind(key);

    if (it != g_camcorderProfiles->constEnd())
        return AndroidCamcorderProfile(*it);

    QJNIObjectPrivate camProfile = QJNIObjectPrivate::callStaticObjectMethod("android/media/CamcorderProfile",
                                                                             "get",
                                                                             "(II)Landroid/media/CamcorderProfile;",
                                                                             cameraId,
                                                                             quality);

    return AndroidCamcorderProfile((*g_camcorderProfiles)[key] = camProfile);
}
示例#7
0
bool CSearch::search(mapView_t *mapView, QString str, double &ra, double &dec, double &fov, mapObj_t &obj)
{
  QString what = str.mid(0, 4);
  str = str.mid(4);

  QRegExp reg("\\b" + str + "\\b", Qt::CaseInsensitive);

  str = str.simplified();

  cAstro.setParam(mapView);

  if (SS_CHECK_OR(SS_PLANET, what))
  {
    if (!str.compare("es", Qt::CaseInsensitive))
    {
      orbit_t o, m;

      cAstro.calcPlanet(PT_MOON, &m);
      cAstro.calcEarthShadow(&o, &m);

      ra = o.lRD.Ra;
      dec = o.lRD.Dec;
      fov = getOptObjFov(o.sx / 3600.0, o.sy / 3600.0);

      obj.type = MO_EARTH_SHD;

      return(true);
    }
  }

  if (SS_CHECK_OR(SS_STAR, what))
  {
    if (str.startsWith("HD", Qt::CaseInsensitive))
    {
      str = str.mid(2);

      int hd = str.toInt();

      int reg, index;
      tychoStar_t *star;

      if (cTYC.findStar(NULL, TS_HD, 0, hd, 0, 0, 0, 0, 0, 0, reg, index))
      {
        cTYC.getStar(&star, reg, index);
        ra = star->rd.Ra;
        dec = star->rd.Dec;
        precess(&ra, &dec, JD2000, mapView->jd);
        fov = DMS2RAD(10, 0, 0);

        obj.type = MO_TYCSTAR;
        obj.par1 = reg;
        obj.par2 = index;

        return true;
      }
    }

    if (str.startsWith("TYC", Qt::CaseInsensitive))
    {
      str = str.mid(3);
      QStringList list = str.split("-");

      if (list.count() == 3)
      {
        int t1 = list[0].toInt();
        int t2 = list[1].toInt();
        int t3 = list[2].toInt();
        int reg, index;
        tychoStar_t *star;

        if (cTYC.findStar(NULL, TS_TYC, 0, 0, 0, 0, t1, t2, t3, 0, reg, index))
        {
          cTYC.getStar(&star, reg, index);
          ra = star->rd.Ra;
          dec = star->rd.Dec;
          precess(&ra, &dec, JD2000, mapView->jd);
          fov = DMS2RAD(10, 0, 0);

          obj.type = MO_TYCSTAR;
          obj.par1 = reg;
          obj.par2 = index;

          return true;
        }
      }
    }

    if (str.startsWith("UCAC4", Qt::CaseInsensitive))
    {
      str = str.mid(5);
      QStringList list = str.split("-");

      if (list.count() == 2)
      {
        int zone = list[0].toInt();
        int num = list[1].toInt();
        ucac4Star_t star;

        if (cUcac4.searchStar(zone, num, &star))
        {
          ra = star.rd.Ra;
          dec = star.rd.Dec;
          precess(&ra, &dec, JD2000, mapView->jd);
          fov = DMS2RAD(0, 30, 0);

           // FIX: region a poradi v GSC regionu
          /*
          obj.type = MO_UCAC4;
          obj.par1 = star.zone;
          obj.par2 = star.number;
          */

          return true;
        }
      }
      return false;
    }

    if (str.startsWith("USNO2", Qt::CaseInsensitive))
    {
      str = str.mid(5);
      QStringList list = str.split("-");

      if (list.count() == 2)
      {
        int zone = list[0].toInt();
        int num = list[1].toInt();
        usnoStar_t star;

        if (usno.searchStar(zone, num, &star))
        {
          ra = star.rd.Ra;
          dec = star.rd.Dec;
          precess(&ra, &dec, JD2000, mapView->jd);
          fov = DMS2RAD(0, 30, 0);

          // FIX: region a poradi v GSC regionu
          /*
          obj.type = MO_USNO2;
          obj.par1 = star.zone;
          obj.par2 = star.number;
          */

          return true;
        }
      }
      return false;
    }

    if (str.startsWith("GSC", Qt::CaseInsensitive))
    {
      str = str.mid(3);
      QStringList list = str.split("-");

      if (list.count() == 2)
      {
        int reg = list[0].toInt();
        int num = list[1].toInt();
        int index;
        gsc_t *star;

        if (cGSC.searchStar(reg, num, &star, index))
        {
          ra = star->Ra;
          dec = star->Dec;
          precess(&ra, &dec, JD2000, mapView->jd);
          fov = DMS2RAD(0, 30, 0);

          obj.type = MO_GSCSTAR;
          obj.par1 = reg - 1;
          obj.par2 = index;

          return true;
        }
      }
      return false;
    }
  }

  if (SS_CHECK_OR(SS_POS, what))
  {
    // ra/dec
    {
      QStringList list = str.split(' ');
      if (list.count() == 6)
      {
        double rah, ram, ras;
        double decd, decm, decs;
        bool ok;

        for (int i = 0; i < 6; i++)
        {
          list.at(0).toDouble(&ok);
          if (!ok)
          {
            break;
          }
        }

        if (ok)
        {
          rah = list.at(0).toDouble();
          ram = list.at(1).toDouble();
          ras = list.at(2).toDouble();

          decd = list.at(3).toDouble();
          decm = list.at(4).toDouble();
          decs = list.at(5).toDouble();

          double mra = HMS2RAD(qAbs(rah), qAbs(ram), qAbs(ras));
          double mdec = DMS2RAD(qAbs(decd), qAbs(decm), qAbs(decs));

          if (decd < 0)
          {
            mdec = -mdec;
          }

          if (mra >= 0 && mra <= R360 && mdec >= -R90 && mdec <= R90)
          {
            ra = mra;
            dec = mdec;
            fov = CM_UNDEF;

            if (mapView->epochJ2000 && mapView->coordType == SMCT_RA_DEC)
            {
              precess(&ra, &dec, JD2000, mapView->jd);
            }

            return true;
          }
        }
      }
    }
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_CONSTEL, what))
  {
    // constellation
    if (constFind(str, ra, dec, fov, mapView->jd))
      return(true);
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_STAR_NAME, what))
  {
    // star names
    for (int i = 0; i < cTYC.tNames.count(); i++)
    {
      int offs = cTYC.tNames[i]->supIndex;
      QString name = cTYC.getStarName(&cTYC.pSupplement[offs]);

      if (!str.compare(name, Qt::CaseInsensitive))
      {
        ra = cTYC.tNames[i]->rd.Ra;
        dec = cTYC.tNames[i]->rd.Dec;
        precess(&ra, &dec, JD2000, mapView->jd);
        fov = D2R(30);

        int reg, index;

        if (cTYC.findStar(NULL, TS_TYC, 0, 0, 0, 0, cTYC.tNames[i]->tyc1, cTYC.tNames[i]->tyc2, cTYC.tNames[i]->tyc3, 0, reg, index))
        {
          obj.type = MO_TYCSTAR;
          obj.par1 = reg;
          obj.par2 = index;
        }

        return(true);
      }
    }
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_PLANET, what))
  {
    // search planet/sun/moon
    for (int i = PT_SUN; i <= PT_MOON; i++)
    {
      orbit_t o;
      cAstro.setParam(mapView);
      cAstro.calcPlanet(i, &o);
      QString name = o.name;
      QString english = o.englishName;
      if (!str.compare(name, Qt::CaseInsensitive) ||
          !str.compare(english, Qt::CaseInsensitive))
      {
        ra = o.lRD.Ra;
        dec = o.lRD.Dec;
        fov = getOptObjFov(o.sx / 3600.0, o.sy / 3600.0);

        obj.type = MO_PLANET;
        obj.par1 = i;
        obj.par2 = 0;

        return(true);
      }
    }
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_DSO, what))
  {
    // dso
    dso_t *dso;
    int index;
    if (cDSO.findDSO((char *)qPrintable(str), &dso, index) != -1)
    {
      ra = dso->rd.Ra;
      dec = dso->rd.Dec;
      precess(&ra, &dec, JD2000, mapView->jd);
      fov = getOptObjFov(dso->sx / 3600., dso->sy / 3600.);

      obj.type = MO_DSO;
      obj.par1 = (qint64)dso;
      obj.par2 = 0;

      return(true);
    }
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_ART_SAT, what))
  {
    // satellites
    QString satName = str;

    sgp4.setObserver(mapView);

    for (int i = 0; i < sgp4.count(); i++)
    {
      satellite_t out;
      radec_t rd;

      if (sgp4.getName(i).compare(satName, Qt::CaseInsensitive) == 0)
      {
        if (sgp4.solve(i, mapView, &out))
        {
          cAstro.convAA2RDRef(out.azimuth, out.elevation, &rd.Ra, &rd.Dec);

          ra = rd.Ra;
          dec = rd.Dec;
          fov = getOptObjFov(0, 0, D2R(2.5));

          obj.type = MO_SATELLITE;
          obj.par1 = i;
          obj.par2 = 0;

          return true;
        }
      }
    }
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_ASTER, what))
  {
    // asteroids
    for (int i = 0; i < tAsteroids.count(); i++)
    {
      asteroid_t *a = &tAsteroids[i];

      if (!a->selected)
        continue;

      if (QString(a->name).contains(reg) || a->name == str)
      {
        qDebug() << a->name << reg;
        astSolve(a, mapView->jd);
        ra = a->orbit.lRD.Ra;
        dec = a->orbit.lRD.Dec;
        fov = AST_ZOOM;

        obj.type = MO_ASTER;
        obj.par1 = i;
        obj.par2 = (qint64)a;

        return(true);
      }
    }
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_COMET, what))
  {
    // comets
    for (int i = 0; i < tComets.count(); i++)
    {
      comet_t *a = &tComets[i];

      if (!a->selected)
        continue;

      if (QString(a->name).contains(reg) || a->name == str)
      {
        comSolve(a, mapView->jd);
        ra = a->orbit.lRD.Ra;
        dec = a->orbit.lRD.Dec;
        fov = qMin(COM_ZOOM, 8 * D2R(a->orbit.params[2] / 3600.));

        obj.type = MO_COMET;
        obj.par1 = i;
        obj.par2 = (qint64)a;

        return(true);
      }
    }
  }

  QApplication::processEvents();

  if (SS_CHECK_OR(SS_LUNAR_FEAT, what))
  {
    if (cLunarFeatures.search(str, mapView, ra, dec, fov))
    {
      return(true);
    }
  }

  return(false);
}