Made a list model for displaying them in a list. Also added controles to edit the most important properties.
202 lines
3.7 KiB
C++
202 lines
3.7 KiB
C++
#include "connectionconfig.h"
|
|
#include <QCoreApplication>
|
|
|
|
namespace {
|
|
|
|
struct {
|
|
SslMode mode;
|
|
const char* string;
|
|
} SslModeStringTable[] = {
|
|
{ SslMode::disable, "disable" },
|
|
{ SslMode::allow, "allow" },
|
|
{ SslMode::prefer, "prefer" },
|
|
{ SslMode::require, "require" },
|
|
{ SslMode::verify_ca, "verify-ca" },
|
|
{ SslMode::verify_full, "verify-full" }
|
|
};
|
|
|
|
inline const char *valuePtr(const std::string &v)
|
|
{
|
|
return v.empty() ? nullptr : v.c_str();
|
|
}
|
|
|
|
} // end unnamed namespace
|
|
|
|
std::string SslModeToString(SslMode sm)
|
|
{
|
|
std::string result;
|
|
for (auto e : SslModeStringTable) {
|
|
if (e.mode == sm) {
|
|
result = e.string;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
SslMode StringToSslMode(std::string s)
|
|
{
|
|
SslMode result = SslMode::allow;
|
|
for (auto e : SslModeStringTable) {
|
|
if (e.string == s) {
|
|
result = e.mode;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
|
|
std::vector<const char*> ConnectionConfig::s_keywords = {
|
|
"host", "hostaddr", "port", "user", "password", "dbname",
|
|
"sslmode", "sslcert", "sslkey", "sslrootcrt", "sslcrl",
|
|
"client_encoding", "application_name", nullptr };
|
|
|
|
|
|
ConnectionConfig::ConnectionConfig()
|
|
: m_applicationName(QCoreApplication::applicationName().toUtf8().data())
|
|
, m_values(s_keywords.size(), nullptr)
|
|
{}
|
|
|
|
void ConnectionConfig::setDescription(std::string desc)
|
|
{
|
|
m_description = std::move(desc);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::description() const
|
|
{
|
|
return m_description;
|
|
}
|
|
|
|
void ConnectionConfig::setHost(std::string host)
|
|
{
|
|
m_host = std::move(host);
|
|
m_values[0] = valuePtr(m_host);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::host() const
|
|
{
|
|
return m_host;
|
|
}
|
|
|
|
void ConnectionConfig::setHostAddr(std::string v)
|
|
{
|
|
m_hostaddr = std::move(v);
|
|
m_values[1] = valuePtr(m_hostaddr);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::hostAddr() const
|
|
{
|
|
return m_hostaddr;
|
|
}
|
|
|
|
void ConnectionConfig::setPort(unsigned short port)
|
|
{
|
|
m_port = std::to_string(port);
|
|
m_values[2] = valuePtr(m_port);
|
|
}
|
|
|
|
unsigned short ConnectionConfig::port() const
|
|
{
|
|
return static_cast<unsigned short>(std::stoi(m_port));
|
|
}
|
|
|
|
void ConnectionConfig::setUser(std::string v)
|
|
{
|
|
m_user = std::move(v);
|
|
m_values[3] = valuePtr(m_user);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::user() const
|
|
{
|
|
return m_user;
|
|
}
|
|
|
|
void ConnectionConfig::setPassword(std::string v)
|
|
{
|
|
m_password = std::move(v);
|
|
m_values[4] = valuePtr(m_password);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::password() const
|
|
{
|
|
return m_password;
|
|
}
|
|
|
|
void ConnectionConfig::setDbname(std::string v)
|
|
{
|
|
m_dbname = std::move(v);
|
|
m_values[5] = valuePtr(m_dbname);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::dbname() const
|
|
{
|
|
return m_dbname;
|
|
}
|
|
|
|
void ConnectionConfig::setSslMode(SslMode m)
|
|
{
|
|
m_sslMode = SslModeToString(m);
|
|
m_values[6] = valuePtr(m_sslMode);
|
|
}
|
|
|
|
SslMode ConnectionConfig::sslMode() const
|
|
{
|
|
return StringToSslMode(m_sslMode);
|
|
}
|
|
|
|
void ConnectionConfig::setSslCert(std::string v)
|
|
{
|
|
m_sslCert = std::move(v);
|
|
m_values[7] = valuePtr(m_sslCert);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::sslCert() const
|
|
{
|
|
return m_sslCert;
|
|
}
|
|
|
|
void ConnectionConfig::setSslKey(std::string v)
|
|
{
|
|
m_sslKey = std::move(v);
|
|
m_values[8] = valuePtr(m_sslKey);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::sslKey() const
|
|
{
|
|
return m_sslKey;
|
|
}
|
|
|
|
void ConnectionConfig::setSslRootCert(std::string v)
|
|
{
|
|
m_sslRootCert = std::move(v);
|
|
m_values[9] = valuePtr(m_sslRootCert);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::sslRootCert() const
|
|
{
|
|
return m_sslRootCert;
|
|
}
|
|
|
|
void ConnectionConfig::setSslCrl(std::string v)
|
|
{
|
|
m_sslCrl = std::move(v);
|
|
m_values[10] = valuePtr(m_sslCrl);
|
|
}
|
|
|
|
const std::string& ConnectionConfig::sslCrl() const
|
|
{
|
|
return m_sslCrl;
|
|
}
|
|
|
|
|
|
const char * const * ConnectionConfig::getKeywords() const
|
|
{
|
|
return s_keywords.data();
|
|
}
|
|
|
|
const char * const * ConnectionConfig::getValues() const
|
|
{
|
|
m_values[11] = "utf8";
|
|
m_values[12] = valuePtr(m_applicationName);
|
|
|
|
return m_values.data();
|
|
}
|