Based on slack discussion, pass arguments from launcher to started application

https://swift-project.slack.com/archives/C04J6J76N/p1504449711000040

* utility functions in CApplication and CNetworkVatlib for cmd args
* a.addVatlibOptions() in launcher
* function CSwiftLauncher::startDetached to unify startup and simplify debugging
This commit is contained in:
Klaus Basan
2017-09-04 20:06:04 +02:00
committed by Mathew Sutcliffe
parent 1baf74ebf3
commit eab22e86b0
7 changed files with 54 additions and 26 deletions

View File

@@ -1156,6 +1156,18 @@ namespace BlackCore
return false;
}
QStringList CApplication::inheritedArguments(bool withVatlibArgs) const
{
QStringList args;
if (this->isSet(m_cmdDevelopment))
{
args.append("--" + m_cmdDevelopment.names().first());
args.append("true");
}
if (withVatlibArgs) { args.append(CNetworkVatlib::inheritedArguments()); }
return args;
}
void CApplication::cmdLineHelpMessage()
{
this->m_parser.showHelp(); // terminates

View File

@@ -303,6 +303,9 @@ namespace BlackCore
//! Display error message
virtual bool cmdLineErrorMessage(const BlackMisc::CStatusMessageList &msgs, bool retry = false) const;
//! Arguments to be passed to another swift appplication
QStringList inheritedArguments(bool withVatlibArgs = true) const;
// ----------------------- contexts ----------------------------------------
//! \name Context / core facade related

View File

@@ -545,6 +545,17 @@ namespace BlackCore
return m_interimPositionReceivers;
}
QStringList CNetworkVatlib::inheritedArguments()
{
QStringList args;
int id = 0;
QString key;
if (!getCmdLineClientIdAndKey(id, key)) return args;
args << "--idAndKey";
args << sApp->getParserValue("clientIdAndKey"); // as typed in
return args;
}
void CNetworkVatlib::sendServerQuery(const BlackMisc::Aviation::CCallsign &callsign)
{
Q_ASSERT_X(isConnected(), Q_FUNC_INFO, "Can't send to server when disconnected");
@@ -710,9 +721,9 @@ namespace BlackCore
return (CBuildConfig::isStableBranch() && !CBuildConfig::isDevBranch()) ? e : opts;
}
bool CNetworkVatlib::getCmdLineClientIdAndKey(int &id, QString &key) const
bool CNetworkVatlib::getCmdLineClientIdAndKey(int &id, QString &key)
{
QString clientIdAndKey = sApp->getParserValue("clientIdAndKey").toLower();
const QString clientIdAndKey = sApp->getParserValue("clientIdAndKey").toLower();
if (clientIdAndKey.isEmpty() || !clientIdAndKey.contains(':')) { return false; }
const auto stringList = clientIdAndKey.split(':');
QString clientIdAsString = stringList[0];

View File

@@ -115,6 +115,9 @@ namespace BlackCore
virtual const BlackMisc::Aviation::CCallsignSet &getInterimPositionReceivers() const override;
//! @}
//! Arguments to be passed to another swift appplication
static QStringList inheritedArguments();
//! \name Weather functions
//! @{
virtual void sendMetarQuery(const BlackMisc::Aviation::CAirportIcaoCode &airportIcao) override;
@@ -127,7 +130,7 @@ namespace BlackCore
static int const c_interimPositionTimeOffsetMsec = 2000; //!< offset time for received interim position updates
private:
bool getCmdLineClientIdAndKey(int &id, QString &key) const;
static bool getCmdLineClientIdAndKey(int &id, QString &key);
void replyToFrequencyQuery(const BlackMisc::Aviation::CCallsign &callsign);
void replyToNameQuery(const BlackMisc::Aviation::CCallsign &callsign);