swift
distributorform.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QLineEdit>
7 #include <QMetaType>
8 
9 #include "distributorform.h"
10 #include "ui_distributorform.h"
11 
13 #include "gui/dropsite.h"
15 #include "gui/labelandicon.h"
16 #include "misc/icons.h"
19 
20 using namespace swift::misc;
21 using namespace swift::misc::simulation;
22 using namespace swift::gui::components;
23 
24 namespace swift::gui::editors
25 {
26  CDistributorForm::CDistributorForm(QWidget *parent) : CForm(parent), ui(new Ui::CDistributorForm)
27  {
28  ui->setupUi(this);
29  this->setFocusProxy(ui->comp_DistributorSelector);
30  ui->le_Updated->setReadOnly(true);
31  ui->comp_DistributorSelector->withDistributorDescription(false);
32  ui->lai_Id->set(CIcons::appDistributors16(), "Id:");
33 
34  // drag and drop
35  connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CDistributorForm::onDroppedCode);
36  connect(ui->comp_DistributorSelector, &CDbDistributorSelectorComponent::changedDistributor, this,
38  // connect(ui->comp_DistributorSelector, &CDbDistributorSelectorComponent::returnPressed, this,
39  // &CDistributorForm::onReturnPressed);
40  ui->drop_DropData->setInfoText("<drop distributor>");
41  ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CDistributor>(), qMetaTypeId<CDistributorList>() });
42  }
43 
45 
47  {
48  if (m_currentDistributor == distributor) { return false; }
49  m_currentDistributor = distributor;
50 
51  ui->comp_DistributorSelector->setDistributor(distributor);
52  ui->le_Description->setText(distributor.getDescription());
53  ui->le_Alias1->setText(distributor.getAlias1());
54  ui->le_Alias2->setText(distributor.getAlias2());
55  ui->le_Updated->setText(distributor.getFormattedUtcTimestampYmdhms());
56  return true;
57  }
58 
59  void CDistributorForm::jsonPasted(const QString &json) { Q_UNUSED(json); }
60 
62  {
63  CDistributor distributor(ui->comp_DistributorSelector->getDistributor());
64  distributor.setAlias1(ui->le_Alias1->text());
65  distributor.setAlias2(ui->le_Alias2->text());
66  distributor.setDescription(ui->le_Description->text());
67  return distributor;
68  }
69 
71  {
72  Q_UNUSED(nested);
73  CDistributor distributor(getValue());
74  CStatusMessageList msgs(distributor.validate());
75  if (this->isReadOnly())
76  {
77  // in readonly I cannot change the data anyway, so skip warnings
79  }
80  ui->val_Indicator->setState(msgs);
81  return msgs;
82  }
83 
84  void CDistributorForm::allowDrop(bool allowDrop) { ui->drop_DropData->allowDrop(allowDrop); }
85 
86  bool CDistributorForm::isDropAllowed() const { return ui->drop_DropData->isDropAllowed(); }
87 
88  void CDistributorForm::setReadOnly(bool readOnly)
89  {
90  ui->le_Alias1->setReadOnly(readOnly);
91  ui->le_Alias2->setReadOnly(readOnly);
92  ui->le_Description->setReadOnly(readOnly);
93  ui->comp_DistributorSelector->setReadOnly(readOnly);
94  ui->drop_DropData->setVisible(!readOnly);
95  this->forceStyleSheetUpdate();
96  }
97 
99  {
100  this->setReadOnly(true);
101  ui->comp_DistributorSelector->setReadOnly(false);
102  ui->drop_DropData->setVisible(true);
103  }
104 
106  {
107  this->setValue(CDistributor());
108  ui->comp_DistributorSelector->clear();
109  ui->comp_DistributorSelector->setReadOnly(false);
110  }
111 
112  void CDistributorForm::onDroppedCode(const swift::misc::CVariant &variantDropped)
113  {
114  CDistributor distributor;
115  if (variantDropped.canConvert<CDistributor>()) { distributor = variantDropped.value<CDistributor>(); }
116  else if (variantDropped.canConvert<CDistributorList>())
117  {
118  const CDistributorList icaoList(variantDropped.value<CDistributorList>());
119  if (icaoList.isEmpty()) { return; }
120  distributor = icaoList.front();
121  }
122  else { return; }
123  this->setValue(distributor);
124  }
125 
126  bool CDistributorForm::hasAnyUiDetailsValues() const
127  {
128  return !(ui->le_Alias1->text().isEmpty() && ui->le_Alias2->text().isEmpty() &&
129  ui->le_Description->text().isEmpty() && ui->le_Updated->text().isEmpty());
130  }
131 } // namespace swift::gui::editors
void droppedValueObject(const swift::misc::CVariant &droppedObject)
Dropped value object.
bool setValue(const swift::misc::simulation::CDistributor &distributor=swift::misc::simulation::CDistributor())
Set value.
virtual void jsonPasted(const QString &json)
JSON string has been pasted.
swift::misc::simulation::CDistributor getValue() const
Get value.
virtual void setSelectOnly()
Read only, but entity can be selected (normally used in mapping). Use setReadOnly to reset this very ...
bool isDropAllowed() const
Is drop allowed?
void allowDrop(bool allowDrop)
Allow to drop.
virtual swift::misc::CStatusMessageList validate(bool nested=false) const
Validate, empty list means OK.
virtual void setReadOnly(bool readonly)
Set editable.
Form base class.
Definition: form.h:27
void forceStyleSheetUpdate()
Forces a stylesheet update.
Definition: form.cpp:47
bool isReadOnly() const
Is read only?
Definition: form.h:54
Status messages, e.g. from Core -> GUI.
void removeWarningsAndBelow()
Remove warnings and below.
Wrapper around QVariant which provides transparent access to CValueObject methods of the contained ob...
Definition: variant.h:66
T value() const
Return the value converted to the type T.
Definition: variant.h:169
bool canConvert(int typeId) const
True if this variant can be converted to the type with the given metatype ID.
QString getFormattedUtcTimestampYmdhms() const
As yyyy MM dd HH mm ss.
Value object encapsulating information of software distributor.
Definition: distributor.h:33
void setDescription(const QString &description)
Set description.
Definition: distributor.h:62
const QString & getDescription() const
Get description.
Definition: distributor.h:56
const QString & getAlias2() const
Get alias2.
Definition: distributor.h:71
swift::misc::CStatusMessageList validate() const
Validate data.
void setAlias1(const QString &alias)
Set alias1.
Definition: distributor.h:74
const QString & getAlias1() const
Get alias1.
Definition: distributor.h:68
void setAlias2(const QString &alias)
Set alias2.
Definition: distributor.h:77
Value object encapsulating a list of distributors.
High level reusable GUI components.
Definition: aboutdialog.cpp:13
Free functions in swift::misc.