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 + + + + + + + +