Allow to save list of "other servers"

* load / save setting called
* fixed handling in server form

Follow up of refs #533, related to #545
This commit is contained in:
Klaus Basan
2015-12-08 06:47:59 +01:00
parent 8058a19288
commit 6ac1808d25
8 changed files with 96 additions and 32 deletions

View File

@@ -11,6 +11,7 @@
#include "ui_settingsnetworkserverscomponent.h"
#include "blackcore/contextnetwork.h"
#include "blackcore/setupreader.h"
#include "blackcore/contextapplication.h"
#include "blackmisc/logmessage.h"
#include "blackmisc/project.h"
#include <QModelIndex>
@@ -35,10 +36,10 @@ namespace BlackGui
ui->setupUi(this);
// Settings server
this->connect(this->ui->pb_SettingsTnServersRemoveServer, &QPushButton::pressed, this, &CSettingsNetworkServersComponent::ps_alterTrafficServer);
this->connect(this->ui->pb_SettingsTnServersSaveServer, &QPushButton::pressed, this, &CSettingsNetworkServersComponent::ps_alterTrafficServer);
this->connect(this->ui->tvp_SettingsTnServers, &QTableView::clicked, this, &CSettingsNetworkServersComponent::ps_networkServerSelected);
this->connect(this->ui->pb_RemoveServer, &QPushButton::pressed, this, &CSettingsNetworkServersComponent::ps_alterTrafficServer);
this->connect(this->ui->pb_SaveServer, &QPushButton::pressed, this, &CSettingsNetworkServersComponent::ps_alterTrafficServer);
this->connect(this->ui->pb_AddServer, &QPushButton::pressed, this, &CSettingsNetworkServersComponent::ps_alterTrafficServer);
this->connect(this->ui->tvp_Servers, &QTableView::clicked, this, &CSettingsNetworkServersComponent::ps_serverSelected);
this->ps_reloadSettings();
}
@@ -55,44 +56,67 @@ namespace BlackGui
{
serverList.push_back(m_setup.get().fsdTestServersPlusHardcodedServers());
}
this->ui->tvp_SettingsTnServers->updateContainer(serverList);
this->ui->tvp_Servers->updateContainer(serverList);
}
void CSettingsNetworkServersComponent::ps_networkServerSelected(const QModelIndex &index)
void CSettingsNetworkServersComponent::ps_serverSelected(const QModelIndex &index)
{
const CServer clickedServer = this->ui->tvp_SettingsTnServers->at(index);
const CServer clickedServer = this->ui->tvp_Servers->at(index);
this->ui->frp_ServerForm->setServer(clickedServer);
}
void CSettingsNetworkServersComponent::ps_alterTrafficServer()
{
CServer server = this->ui->frp_ServerForm->getServer();
CServer server(this->ui->frp_ServerForm->getServer());
CStatusMessageList msgs = server.validate();
if (!msgs.isEmpty())
{
msgs.addCategories(this);
CLogMessage::preformatted(msgs);
return;
}
if (!msgs.isEmpty()) { msgs.addCategories(this); }
CServerList serverList(m_trafficNetworkServers.get());
QObject *sender = QObject::sender();
if (sender == this->ui->pb_SettingsTnServersRemoveServer)
CStatusMessage msg;
bool changed = false;
if (sender == this->ui->pb_RemoveServer)
{
serverList.removeIf(&CServer::getName, server.getName());
// lenient name removal
serverList.removeByName(server.getName());
changed = true;
}
else if (sender == this->ui->pb_SettingsTnServersSaveServer)
else if (sender == this->ui->pb_AddServer)
{
if (!msgs.isEmpty())
{
CLogMessage::preformatted(msgs);
return;
}
serverList.replaceOrAdd(&CServer::getName, server.getName(), server);
changed = true;
}
else if (sender == this->ui->pb_SaveServer)
{
if (msgs.isEmpty() && server.hasAddressAndPort())
{
// update in any case to list before saving if we have a valid form
serverList.replaceOrAdd(&CServer::getName, server.getName(), server);
changed = true;
}
}
CStatusMessage msg = m_trafficNetworkServers.set(serverList);
if (msg.isWarningOrAbove())
if (changed)
{
msg = m_trafficNetworkServers.set(serverList);
this->ps_reloadSettings(); // call manually as local object
}
if (msgs.isEmpty() && sender == this->ui->pb_SaveServer)
{
msg = this->getIContextApplication()->saveSettings(m_trafficNetworkServers.getKey());
}
if (!msg.isEmpty())
{
msg.addCategories(this);
CLogMessage::preformatted(msg);
}
}
} // namespace
} // namespace

View File

@@ -44,7 +44,7 @@ namespace BlackGui
void ps_reloadSettings();
//! Network server selected
void ps_networkServerSelected(const QModelIndex &index);
void ps_serverSelected(const QModelIndex &index);
//! Alter traffic server
void ps_alterTrafficServer();

View File

@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>260</width>
<width>282</width>
<height>334</height>
</rect>
</property>
@@ -36,7 +36,7 @@
<number>1</number>
</property>
<item>
<widget class="BlackGui::Views::CServerView" name="tvp_SettingsTnServers">
<widget class="BlackGui::Views::CServerView" name="tvp_Servers">
<property name="editTriggers">
<set>QAbstractItemView::AnyKeyPressed|QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
</property>
@@ -102,7 +102,7 @@
</spacer>
</item>
<item>
<widget class="QPushButton" name="pb_SettingsTnServersSaveServer">
<widget class="QPushButton" name="pb_SaveServer">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -110,12 +110,19 @@
</sizepolicy>
</property>
<property name="text">
<string>Save</string>
<string>save</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_SettingsTnServersRemoveServer">
<widget class="QPushButton" name="pb_AddServer">
<property name="text">
<string>add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pb_RemoveServer">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -123,7 +130,7 @@
</sizepolicy>
</property>
<property name="text">
<string>Remove</string>
<string>remove</string>
</property>
</widget>
</item>