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

@@ -45,7 +45,7 @@ namespace BlackGui
{
ui->setupUi(this);
this->setFocusProxy(ui->le_Id);
ui->lai_id->set(CIcons::appAircraftIcao16(), "Id:");
ui->lai_Id->set(CIcons::appAircraftIcao16(), "Id:");
ui->le_Updated->setReadOnly(true);
ui->le_Id->setValidator(new QIntValidator(0, 999999, ui->le_Id));
ui->aircraft_Selector->displayWithIcaoDescription(false);
@@ -54,8 +54,9 @@ namespace BlackGui
// Id
connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAircraftIcaoForm::ps_idEntered);
// drag and drop
// drag and drop, pasted
connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAircraftIcaoForm::ps_droppedCode);
connect(ui->tb_Paste, &QToolButton::clicked, this, &CAircraftIcaoForm::ps_pasted);
ui->drop_DropData->setInfoText("<drop aircraft ICAO code>");
ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CAircraftIcaoCode>(), qMetaTypeId<CAircraftIcaoCodeList>()});
}
@@ -89,6 +90,23 @@ namespace BlackGui
return true;
}
void CAircraftIcaoForm::jsonPasted(const QString &json)
{
try
{
CAircraftIcaoCodeList icaos;
icaos.convertFromJson(Json::jsonObjectFromString(json));
if (!icaos.isEmpty())
{
this->setValue(icaos.front());
}
}
catch (const CJsonException &ex)
{
Q_UNUSED(ex);
}
}
CAircraftIcaoCode CAircraftIcaoForm::getValue() const
{
CAircraftIcaoCode icao(ui->aircraft_Selector->getAircraftIcao());
@@ -159,6 +177,7 @@ namespace BlackGui
ui->le_Family->setReadOnly(readOnly);
ui->le_Iata->setReadOnly(readOnly);
ui->le_Id->setReadOnly(readOnly);
ui->tb_Paste->setVisible(!readOnly);
CGuiUtility::checkBoxReadOnly(ui->cb_Legacy, readOnly);
CGuiUtility::checkBoxReadOnly(ui->cb_Military, readOnly);
@@ -173,6 +192,7 @@ namespace BlackGui
void CAircraftIcaoForm::setSelectOnly()
{
this->setReadOnly(true);
ui->tb_Paste->setVisible(true);
ui->aircraft_Selector->setReadOnly(false);
ui->le_Id->setReadOnly(false);
ui->drop_DropData->setVisible(true);