Ref T172, server form supports ecosystem

This commit is contained in:
Klaus Basan
2017-12-28 18:36:17 +01:00
parent 1f9337609a
commit d8abb3f83b
4 changed files with 126 additions and 93 deletions

View File

@@ -62,7 +62,7 @@
<property name="minimumSize">
<size>
<width>0</width>
<height>150</height>
<height>160</height>
</size>
</property>
<property name="frameShape">

View File

@@ -27,15 +27,10 @@ namespace BlackGui
{
ui->setupUi(this);
ui->le_Port->setValidator(new QIntValidator(1, 65535, this));
this->initServerTypes();
// init all server type values
ui->cb_ServerType->clear();
int c = 0;
for (int type : CServer::allServerTypes())
{
const CServer::ServerType st = static_cast<CServer::ServerType>(type);
ui->cb_ServerType->insertItem(c++, CServer::serverTypeToString(st), QVariant::fromValue(type));
}
connect(ui->cbp_Ecosystem, &CEcosystemComboBox::currentTextChanged, this, &CServerForm::onChangedEcoSystem);
connect(ui->cb_ServerType, &QComboBox::currentTextChanged, this, &CServerForm::onChangedServerType);
}
CServerForm::~CServerForm()
@@ -48,6 +43,7 @@ namespace BlackGui
ui->le_RealName->setText(user.getRealName());
ui->le_Name->setText(server.getName());
ui->cb_ServerType->setCurrentText(server.getServerTypeAsString());
ui->cbp_Ecosystem->setCurrentEcosystem(server.getEcosystem());
ui->le_Password->setText(user.getPassword());
ui->le_Description->setText(server.getDescription());
ui->le_Address->setText(server.getAddress());
@@ -57,26 +53,31 @@ namespace BlackGui
BlackMisc::Network::CServer CServerForm::getServer() const
{
CUser user(
const CUser user(
ui->le_NetworkId->text().trimmed(),
ui->le_RealName->text().trimmed().simplified(),
"",
ui->le_Password->text().trimmed()
);
CServer server(
const CFsdSetup setup(ui->form_ServerFsd->getValue());
const CServer server(
ui->le_Name->text().trimmed().simplified(),
ui->le_Description->text().trimmed().simplified(),
ui->le_Address->text().trimmed(),
ui->le_Port->text().trimmed().toInt(),
user,
ui->cb_ServerType->currentData().value<CServer::ServerType>(),
user, setup,
ui->cbp_Ecosystem->getSelectedEcosystem(),
this->getServerType(),
true
);
CFsdSetup setup(ui->form_ServerFsd->getValue());
server.setFsdSetup(setup);
return server;
}
CServer::ServerType CServerForm::getServerType() const
{
return ui->cb_ServerType->currentData().value<CServer::ServerType>();
}
void CServerForm::setReadOnly(bool readOnly)
{
ui->le_NetworkId->setReadOnly(readOnly);
@@ -88,23 +89,49 @@ namespace BlackGui
ui->le_Password->setReadOnly(readOnly);
ui->form_ServerFsd->setReadOnly(readOnly);
ui->cb_ServerType->setEnabled(!readOnly);
ui->cbp_Ecosystem->setEnabled(!readOnly);
}
void CServerForm::showPasswordField(bool show)
{
if (ui->le_Password->isVisible() == show) { return; }
if (m_passwordNameLabel.isEmpty()) { m_passwordNameLabel = ui->lbl_IdPassword->text(); }
if (show)
{
ui->lbl_IdPassword->setText(m_passwordNameLabel);
}
else
{
ui->lbl_IdPassword->setText("Id");
}
ui->lbl_IdPassword->setText(show ? m_passwordNameLabel : "Id");
ui->le_Password->setVisible(show);
}
void CServerForm::initServerTypes()
{
// init all server type values
int c = 0;
ui->cb_ServerType->clear();
for (const int type : CServer::allServerTypes())
{
const CServer::ServerType st = static_cast<CServer::ServerType>(type);
ui->cb_ServerType->insertItem(c++, CServer::serverTypeToString(st), QVariant::fromValue(type));
}
}
void CServerForm::onChangedServerType(const QString &text)
{
Q_UNUSED(text);
const CServer::ServerType t = this->getServerType();
const CServer dummy(t);
const CEcosystem es = dummy.getEcosystem();
if (es.isUnspecified()) { return; }
if (es.isSystem(CEcosystem::NoSystem)) { return; }
ui->cbp_Ecosystem->setCurrentEcosystem(es);
}
void CServerForm::onChangedEcoSystem(const QString &text)
{
Q_UNUSED(text);
const CEcosystem es = ui->cbp_Ecosystem->getSelectedEcosystem();
const CServer dummy(es);
if (dummy.hasUnspecifiedServerType()) { return; }
ui->cb_ServerType->setCurrentText(dummy.getServerTypeAsString());
}
BlackMisc::CStatusMessageList CServerForm::validate(bool nested) const
{
Q_UNUSED(nested);

View File

@@ -47,6 +47,9 @@ namespace BlackGui
//! Get server
BlackMisc::Network::CServer getServer() const;
//! Get currently selected server type
BlackMisc::Network::CServer::ServerType getServerType() const;
//! \name Form class implementations
//! @{
virtual void setReadOnly(bool readonly) override;
@@ -57,6 +60,10 @@ namespace BlackGui
void showPasswordField(bool show);
private:
void initServerTypes();
void onChangedServerType(const QString &text);
void onChangedEcoSystem(const QString &text);
QScopedPointer<Ui::CNetworkServerForm> ui;
QString m_passwordNameLabel;
};

View File

@@ -2,23 +2,9 @@
<ui version="4.0">
<class>CNetworkServerForm</class>
<widget class="QFrame" name="CNetworkServerForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>275</width>
<height>172</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="vl_NetworkServerForm">
<property name="spacing">
<number>0</number>
@@ -59,64 +45,23 @@
</property>
<item>
<widget class="QFrame" name="fr_ServerGeneral">
<layout class="QGridLayout" name="gl_ServerForm">
<layout class="QGridLayout" name="gl_ServerGeneral" columnstretch="1,2,2">
<property name="leftMargin">
<number>4</number>
<number>3</number>
</property>
<property name="topMargin">
<number>4</number>
<number>3</number>
</property>
<property name="rightMargin">
<number>4</number>
<number>3</number>
</property>
<property name="bottomMargin">
<number>4</number>
<number>3</number>
</property>
<property name="spacing">
<number>4</number>
</property>
<item row="4" column="0">
<widget class="QLabel" name="lbl_IdPassword">
<property name="text">
<string>Id/Password:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="le_NetworkId">
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>id</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_Name">
<property name="text">
<string>Name/Type:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_RealName">
<property name="text">
<string>Real name:</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_Description">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="lbl_Address">
<property name="text">
<string>Addr./ port:</string>
<string>Name:</string>
</property>
</widget>
</item>
@@ -127,17 +72,45 @@
</property>
</widget>
</item>
<item row="0" column="3">
<item row="1" column="0">
<widget class="QLabel" name="lbl_Ecosystem">
<property name="text">
<string>Eco./type:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="cb_ServerType"/>
</item>
<item row="1" column="1" colspan="3">
<item row="2" column="0">
<widget class="QLabel" name="lbl_Description">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLineEdit" name="le_Description">
<property name="placeholderText">
<string>server description</string>
</property>
</widget>
</item>
<item row="2" column="3">
<item row="3" column="0">
<widget class="QLabel" name="lbl_Address">
<property name="text">
<string>Addr./ port:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="le_Address">
<property name="placeholderText">
<string>e.g. &quot;server.foo.com&quot;</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLineEdit" name="le_Port">
<property name="text">
<string>6809</string>
@@ -147,14 +120,14 @@
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLineEdit" name="le_Address">
<property name="placeholderText">
<string>e.g. &quot;server.foo.com&quot;</string>
<item row="4" column="0">
<widget class="QLabel" name="lbl_RealName">
<property name="text">
<string>Real name:</string>
</property>
</widget>
</item>
<item row="3" column="1" colspan="3">
<item row="4" column="1" colspan="2">
<widget class="QLineEdit" name="le_RealName">
<property name="text">
<string/>
@@ -164,7 +137,24 @@
</property>
</widget>
</item>
<item row="4" column="2" colspan="2">
<item row="5" column="0">
<widget class="QLabel" name="lbl_IdPassword">
<property name="text">
<string>Id/Password:</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="le_NetworkId">
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>id</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="le_Password">
<property name="maxLength">
<number>32</number>
@@ -177,6 +167,9 @@
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="BlackGui::CEcosystemComboBox" name="cbp_Ecosystem"/>
</item>
</layout>
</widget>
</item>
@@ -222,9 +215,15 @@
<header>blackgui/editors/fsdsetupform.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>BlackGui::CEcosystemComboBox</class>
<extends>QComboBox</extends>
<header>blackgui/ecosystemcombobox.h</header>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>le_Name</tabstop>
<tabstop>cbp_Ecosystem</tabstop>
<tabstop>cb_ServerType</tabstop>
<tabstop>le_Description</tabstop>
<tabstop>le_Address</tabstop>