FeatureWebAPIUtils: Add method to open Sky Map and find a target.

pull/2052/head
srcejon 2024-03-28 15:26:56 +00:00
rodzic 2be14f944a
commit 10993b447b
2 zmienionych plików z 70 dodań i 0 usunięć

Wyświetl plik

@ -210,3 +210,56 @@ bool FeatureWebAPIUtils::satelliteLOS(const QString name)
// Not currently required by any features // Not currently required by any features
return true; return true;
} }
// Open a Sky Map feature and find the specified target
bool FeatureWebAPIUtils::openSkyMapAndFind(const QString& target)
{
return SkyMapOpener::open(target);
}
bool SkyMapOpener::open(const QString& target)
{
// Create a SkyMap feature
MainCore *mainCore = MainCore::instance();
PluginAPI::FeatureRegistrations *featureRegistrations = mainCore->getPluginManager()->getFeatureRegistrations();
int nbRegistrations = featureRegistrations->size();
int index = 0;
for (; index < nbRegistrations; index++)
{
if (featureRegistrations->at(index).m_featureId == "SkyMap") {
break;
}
}
if (index < nbRegistrations)
{
new SkyMapOpener(target);
MainCore::MsgAddFeature *msg = MainCore::MsgAddFeature::create(0, index);
mainCore->getMainMessageQueue()->push(msg);
return true;
}
else
{
qWarning() << "Sky Map feature not available";
return false;
}
}
SkyMapOpener::SkyMapOpener(const QString& target) :
m_target(target)
{
connect(MainCore::instance(), &MainCore::featureAdded, this, &SkyMapOpener::onSkyMapAdded);
}
void SkyMapOpener::onSkyMapAdded(int featureSetIndex, Feature *feature)
{
if (feature->getURI() == "sdrangel.feature.skymap")
{
disconnect(MainCore::instance(), &MainCore::featureAdded, this, &SkyMapOpener::onSkyMapAdded);
FeatureWebAPIUtils::skyMapFind(m_target, featureSetIndex, feature->getIndexInFeatureSet());
deleteLater();
}
}

Wyświetl plik

@ -27,12 +27,29 @@
class Feature; class Feature;
class SkyMapOpener : public QObject {
Q_OBJECT
QString m_target;
private:
SkyMapOpener(const QString& target);
public:
static bool open(const QString& target);
private slots:
void onSkyMapAdded(int featureSetIndex, Feature *feature);
};
class SDRBASE_API FeatureWebAPIUtils class SDRBASE_API FeatureWebAPIUtils
{ {
public: public:
static bool mapFind(const QString& target, int featureSetIndex=-1, int featureIndex=-1); static bool mapFind(const QString& target, int featureSetIndex=-1, int featureIndex=-1);
static bool mapSetDateTime(const QDateTime& dateTime, int featureSetIndex=-1, int featureIndex=-1); static bool mapSetDateTime(const QDateTime& dateTime, int featureSetIndex=-1, int featureIndex=-1);
static bool skyMapFind(const QString& target, int featureSetIndex=-1, int featureIndex=-1); static bool skyMapFind(const QString& target, int featureSetIndex=-1, int featureIndex=-1);
static bool openSkyMapAndFind(const QString& target);
static Feature *getFeature(int& featureSetIndex, int& featureIndex, const QString& uri); static Feature *getFeature(int& featureSetIndex, int& featureIndex, const QString& uri);
static bool satelliteAOS(const QString name, const QDateTime aos, const QDateTime los); static bool satelliteAOS(const QString name, const QDateTime aos, const QDateTime los);
static bool satelliteLOS(const QString name); static bool satelliteLOS(const QString name);