diff --git a/src/blackgui/components/settingsnetworkserverscomponent.cpp b/src/blackgui/components/settingsnetworkserverscomponent.cpp
index c5a358432..4df7f3487 100644
--- a/src/blackgui/components/settingsnetworkserverscomponent.cpp
+++ b/src/blackgui/components/settingsnetworkserverscomponent.cpp
@@ -10,7 +10,7 @@
#include "blackconfig/buildconfig.h"
#include "blackcore/contextapplication.h"
#include "blackcore/data/globalsetup.h"
-#include "blackgui/components/serverform.h"
+#include "blackgui/editors/serverform.h"
#include "blackgui/components/settingsnetworkserverscomponent.h"
#include "blackgui/guiapplication.h"
#include "blackgui/views/serverview.h"
@@ -71,12 +71,12 @@ namespace BlackGui
void CSettingsNetworkServersComponent::ps_serverSelected(const QModelIndex &index)
{
const CServer clickedServer = this->ui->tvp_Servers->at(index);
- this->ui->frp_ServerForm->setServer(clickedServer);
+ this->ui->form_Server->setServer(clickedServer);
}
void CSettingsNetworkServersComponent::ps_alterTrafficServer()
{
- CServer server(this->ui->frp_ServerForm->getServer());
+ CServer server(this->ui->form_Server->getServer());
CStatusMessageList msgs = server.validate();
if (!msgs.isEmpty()) { msgs.addCategories(this); }
diff --git a/src/blackgui/components/settingsnetworkserverscomponent.ui b/src/blackgui/components/settingsnetworkserverscomponent.ui
index 53d6aba81..92dea1232 100644
--- a/src/blackgui/components/settingsnetworkserverscomponent.ui
+++ b/src/blackgui/components/settingsnetworkserverscomponent.ui
@@ -6,10 +6,16 @@
0
0
- 282
- 334
+ 322
+ 310
+
+
+ 0
+ 150
+
+
Frame
@@ -52,11 +58,11 @@
-
-
+
0
- 120
+ 150
@@ -138,12 +144,12 @@
-
-
+
Qt::Vertical
- QSizePolicy::MinimumExpanding
+ QSizePolicy::Fixed
@@ -156,17 +162,17 @@
-
- BlackGui::Components::CServerForm
- QFrame
- blackgui/components/serverform.h
- 1
-
BlackGui::Views::CServerView
QTableView
blackgui/views/serverview.h
+
+ BlackGui::Editors::CServerForm
+ QFrame
+ blackgui/editors/serverform.h
+ 1
+
diff --git a/src/blackgui/editors/form.cpp b/src/blackgui/editors/form.cpp
index 88d095a99..31d26e5c6 100644
--- a/src/blackgui/editors/form.cpp
+++ b/src/blackgui/editors/form.cpp
@@ -9,8 +9,8 @@
#include "blackgui/editors/form.h"
-class QWidget;
-namespace BlackMisc { namespace Network { class CAuthenticatedUser; } }
+using namespace BlackMisc;
+using namespace BlackMisc::Network;
namespace BlackGui
{
@@ -21,7 +21,18 @@ namespace BlackGui
CForm::~CForm() { }
- const BlackMisc::Network::CAuthenticatedUser &CForm::getSwiftDbUser() const
+ void CForm::setSelectOnly()
+ {
+ this->setReadOnly(true);
+ }
+
+ CStatusMessageList CForm::validate(bool withNestedObjects) const
+ {
+ Q_UNUSED(withNestedObjects);
+ return CStatusMessageList();
+ }
+
+ const CAuthenticatedUser &CForm::getSwiftDbUser() const
{
return this->m_swiftDbUser.getThreadLocal();
}
diff --git a/src/blackgui/editors/form.h b/src/blackgui/editors/form.h
index 5e395e3d2..26a62f6fa 100644
--- a/src/blackgui/editors/form.h
+++ b/src/blackgui/editors/form.h
@@ -13,10 +13,8 @@
#define BLACKGUI_EDITORS_FORM_H
#include "blackgui/overlaymessagesframe.h"
-#include "blackgui/blackguiexport.h"
#include "blackcore/data/authenticateduser.h"
#include "blackmisc/datacache.h"
-
#include
#include
@@ -31,7 +29,7 @@ namespace BlackGui
/*!
* Form base class
*/
- class BLACKGUI_EXPORT CForm : public COverlayMessagesFrame
+ class CForm : public COverlayMessagesFrame
{
Q_OBJECT
@@ -47,7 +45,10 @@ namespace BlackGui
//! Read only, but entity can be selected (normally used in mapping).
//! Use setReadOnly to reset this very state
- virtual void setSelectOnly() = 0;
+ virtual void setSelectOnly();
+
+ //! Validate, empty list means OK
+ virtual BlackMisc::CStatusMessageList validate(bool withNestedObjects = true) const;
//! Is read only?
bool isReadOnly() const { return m_readOnly; }
@@ -63,7 +64,6 @@ namespace BlackGui
//! User has been changed
virtual void ps_userChanged();
};
-
} // ns
} // ns
diff --git a/src/blackgui/editors/fsdsetupform.cpp b/src/blackgui/editors/fsdsetupform.cpp
new file mode 100644
index 000000000..7148ce11e
--- /dev/null
+++ b/src/blackgui/editors/fsdsetupform.cpp
@@ -0,0 +1,113 @@
+/* Copyright (C) 2016
+ * swift project Community / Contributors
+ *
+ * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level
+ * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
+ * including this file, may be copied, modified, propagated, or distributed except according to the terms
+ * contained in the LICENSE file.
+ */
+
+#include "fsdsetupform.h"
+#include "ui_fsdsetupform.h"
+#include "blackmisc/stringutils.h"
+#include "blackgui/guiutility.h"
+#include
+
+using namespace BlackMisc;
+using namespace BlackMisc::Network;
+
+namespace BlackGui
+{
+ namespace Editors
+ {
+ CFsdSetupForm::CFsdSetupForm(QWidget *parent) :
+ CForm(parent),
+ ui(new Ui::CFsdSetupForm)
+ {
+ ui->setupUi(this);
+ this->showEnableInfo(false);
+ ui->cb_Enabled->setChecked(true);
+ ui->le_TextCodec->setCompleter(new QCompleter(textCodecNames(true, true), this));
+ connect(ui->cb_Enabled, &QCheckBox::toggled, this, &CFsdSetupForm::ps_enabledToggled);
+ }
+
+ CFsdSetupForm::~CFsdSetupForm()
+ { }
+
+ CFsdSetup CFsdSetupForm::getValue() const
+ {
+ if (!this->isEnabled()) { return this->getDisabledValue(); }
+ CFsdSetup s(ui->le_TextCodec->text().trimmed().toLower());
+ s.setSendReceiveDetails(
+ ui->cb_AircraftPartsSend->isChecked(), ui->cb_AircraftPartsReceive->isChecked(),
+ ui->cb_FastPositionSend->isChecked(), ui->cb_FastPositionReceive->isChecked()
+ );
+ return s;
+ }
+
+ const CFsdSetup &CFsdSetupForm::getDisabledValue() const
+ {
+ static const CFsdSetup fsd;
+ return fsd;
+ }
+
+ void CFsdSetupForm::setValue(const BlackMisc::Network::CFsdSetup &setup)
+ {
+ ui->le_TextCodec->setText(setup.getTextCodec());
+ const CFsdSetup::SendReceiveDetails d = setup.getSendReceiveDetails();
+
+ ui->cb_AircraftPartsReceive->setChecked(d & CFsdSetup::ReceiveAircraftParts);
+ ui->cb_AircraftPartsSend->setChecked(d & CFsdSetup::SendAircraftParts);
+ ui->cb_FastPositionReceive->setChecked(d & CFsdSetup::ReceiveInterimPositions);
+ ui->cb_FastPositionSend->setChecked(d & CFsdSetup::SendIterimPositions);
+ }
+
+ bool CFsdSetupForm::isFsdSetuoEnabled() const
+ {
+ return ui->cb_Enabled->isChecked();
+ }
+
+ void CFsdSetupForm::setFsdSetupEnabled(bool enabled)
+ {
+ ui->cb_Enabled->setChecked(enabled);
+ }
+
+ void CFsdSetupForm::showEnableInfo(bool visible)
+ {
+ ui->cb_Enabled->setVisible(visible);
+ ui->lbl_Enabled->setVisible(visible);
+ }
+
+ void CFsdSetupForm::setReadOnly(bool readonly)
+ {
+ ui->le_TextCodec->setReadOnly(readonly);
+ CGuiUtility::checkBoxReadOnly(ui->cb_AircraftPartsReceive, readonly);
+ CGuiUtility::checkBoxReadOnly(ui->cb_AircraftPartsSend, readonly);
+ CGuiUtility::checkBoxReadOnly(ui->cb_FastPositionReceive, readonly);
+ CGuiUtility::checkBoxReadOnly(ui->cb_FastPositionSend, readonly);
+ }
+
+ CStatusMessageList CFsdSetupForm::validate(bool nested) const
+ {
+ Q_UNUSED(nested);
+ const CFsdSetup val(getValue());
+ CStatusMessageList msgs(val.validate());
+ if (this->isReadOnly())
+ {
+ // in readonly I cannot change the data anyway, so skip warnings
+ msgs.removeWarningsAndBelow();
+ }
+ return msgs;
+ }
+
+ void CFsdSetupForm::ps_enabledToggled(bool enabled)
+ {
+ Q_UNUSED(enabled);
+ this->setReadOnly(!enabled);
+ if (!enabled)
+ {
+ this->setValue(CFsdSetup());
+ }
+ }
+ } // ns
+} // ns
diff --git a/src/blackgui/editors/fsdsetupform.h b/src/blackgui/editors/fsdsetupform.h
new file mode 100644
index 000000000..be81ab3b9
--- /dev/null
+++ b/src/blackgui/editors/fsdsetupform.h
@@ -0,0 +1,74 @@
+/* Copyright (C) 2013
+ * swift project Community / Contributors
+ *
+ * This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level
+ * directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
+ * including this file, may be copied, modified, propagated, or distributed except according to the terms
+ * contained in the LICENSE file.
+ */
+
+//! \file
+
+#ifndef BLACKGUI_EDITORS_FSDSETUPCOMPONENT_H
+#define BLACKGUI_EDITORS_FSDSETUPCOMPONENT_H
+
+#include "blackmisc/network/fsdsetup.h"
+#include "form.h"
+#include
+#include
+
+namespace Ui { class CFsdSetupForm; }
+
+namespace BlackGui
+{
+ namespace Editors
+ {
+ /*!
+ * Setup for FSD
+ */
+ class CFsdSetupForm : public CForm
+ {
+ Q_OBJECT
+
+ public:
+ //! Constructor
+ explicit CFsdSetupForm(QWidget *parent = nullptr);
+
+ //! Constructor
+ ~CFsdSetupForm();
+
+ //! FSD setup from GUI
+ BlackMisc::Network::CFsdSetup getValue() const;
+
+ //! FSD setup when disabled
+ const BlackMisc::Network::CFsdSetup &getDisabledValue() const;
+
+ //! Set to GUI
+ void setValue(const BlackMisc::Network::CFsdSetup &setup);
+
+ //! Enabled?
+ bool isFsdSetuoEnabled() const;
+
+ //! Set enabled / disabled
+ void setFsdSetupEnabled(bool enabled);
+
+ //! Show the enable info
+ void showEnableInfo(bool visible);
+
+ //! \name Form class implementations
+ //! @{
+ virtual void setReadOnly(bool readonly) override;
+ virtual BlackMisc::CStatusMessageList validate(bool nested = false) const override;
+ //! @}
+
+ private slots:
+ //! Enable / disable
+ void ps_enabledToggled(bool enabled);
+
+ private:
+ QScopedPointer ui;
+ };
+ } // ns
+} // ns
+
+#endif // guard
diff --git a/src/blackgui/editors/fsdsetupform.ui b/src/blackgui/editors/fsdsetupform.ui
new file mode 100644
index 000000000..e1108756f
--- /dev/null
+++ b/src/blackgui/editors/fsdsetupform.ui
@@ -0,0 +1,133 @@
+
+
+ CFsdSetupForm
+
+
+
+ 0
+ 0
+ 189
+ 102
+
+
+
+ Frame
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Text codec
+
+
+
+ -
+
+
+ e.g. "latin1"
+
+
+
+ -
+
+
+ QFrame::NoFrame
+
+
+ QFrame::Plain
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ Fast positions
+
+
+
+ -
+
+
+ Aircraft parts
+
+
+
+ -
+
+
+ send
+
+
+
+ -
+
+
+ receive
+
+
+
+ -
+
+
+ send
+
+
+
+ -
+
+
+ receive
+
+
+
+
+
+
+ -
+
+
+ Enabled:
+
+
+
+ -
+
+
+ override defaults
+
+
+
+
+
+
+
+