refs #911, paste support in forms

* added paste icon
* base class utility functions
* implemented paste for livery, airline and aircraft ICAO
This commit is contained in:
Klaus Basan
2017-03-23 03:16:25 +01:00
committed by Mathew Sutcliffe
parent 5e69be6208
commit fc3a36512e
14 changed files with 482 additions and 308 deletions

View File

@@ -51,7 +51,8 @@ namespace BlackGui
// Id
connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAirlineIcaoForm::ps_idEntered);
// drag and drop
// drag and drop, paste
connect(ui->tb_Paste, &QToolButton::clicked, this, &CAirlineIcaoForm::ps_pasted);
connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAirlineIcaoForm::ps_droppedCode);
ui->drop_DropData->setInfoText("<drop airline ICAO code>");
ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CAirlineIcaoCode>(), qMetaTypeId<CAirlineIcaoCodeList>()});
@@ -75,6 +76,9 @@ namespace BlackGui
ui->country_Selector->setCountry(icao.getCountry());
ui->lbl_AirlineIcon->setPixmap(icao.toPixmap());
// sometimes artefacts when icon is displayed
this->repaint();
if (this->m_originalCode.hasCompleteData())
{
emit airlineChanged(this->m_originalCode);
@@ -125,6 +129,7 @@ namespace BlackGui
ui->le_TelephonyDesignator->setReadOnly(readOnly);
ui->country_Selector->setReadOnly(readOnly);
ui->drop_DropData->setVisible(!readOnly);
ui->tb_Paste->setVisible(!readOnly);
CGuiUtility::checkBoxReadOnly(ui->cb_Va, readOnly);
CGuiUtility::checkBoxReadOnly(ui->cb_Military, readOnly);
@@ -137,6 +142,7 @@ namespace BlackGui
ui->selector_AirlineDesignator->setReadOnly(false);
ui->selector_AirlineName->setReadOnly(false);
ui->drop_DropData->setVisible(true);
ui->tb_Paste->setVisible(true);
}
void CAirlineIcaoForm::clear()
@@ -149,6 +155,23 @@ namespace BlackGui
this->setValue(m_originalCode);
}
void CAirlineIcaoForm::jsonPasted(const QString &json)
{
try
{
CAirlineIcaoCodeList icaos;
icaos.convertFromJson(Json::jsonObjectFromString(json));
if (!icaos.isEmpty())
{
this->setValue(icaos.front());
}
}
catch (const CJsonException &ex)
{
Q_UNUSED(ex);
}
}
void CAirlineIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped)
{
CAirlineIcaoCode icao;