Basic version of ConnectionTreeModel is working.

This commit is contained in:
eelke 2019-08-25 15:33:51 +02:00
parent 3721808df4
commit 8840d3bcbb
8 changed files with 348 additions and 3 deletions

View file

@ -57,6 +57,16 @@ ConnectionConfig::ConnectionConfig()
: m_applicationName(QCoreApplication::applicationName().toUtf8().data())
{}
ConnectionGroup *ConnectionConfig::parent()
{
return m_group;
}
void ConnectionConfig::setParent(ConnectionGroup *grp)
{
m_group = grp;
}
void ConnectionConfig::setUuid(const QUuid &uuid)
{
@ -347,3 +357,9 @@ void ConnectionConfig::strToEnv(QProcessEnvironment &env, const QString &var, co
else
env.insert(var, stdStrToQ(val));
}
void ConnectionGroup::add(std::shared_ptr<ConnectionConfig> cc)
{
cc->setParent(this);
m_connections.push_back(cc);
}

View file

@ -2,6 +2,7 @@
#define CONNECTION_H
#include <QUuid>
#include <QVector>
#include <vector>
#include <string>
@ -24,10 +25,41 @@ enum class PasswordState {
class QProcessEnvironment;
class QString;
class ConnectionConfig {
class ConnectionConfig;
/** Base class for ConnectionGroup and ConnectionConfig
* to enable the use of RTTI in the tree model class.
*/
class ConnectionNode {
public:
virtual ~ConnectionNode() = default;
};
class ConnectionGroup: public ConnectionNode {
public:
int conngroup_id;
QString name;
using Connections = QVector<std::shared_ptr<ConnectionConfig>>;
const Connections& connections() const { return m_connections; }
void add(std::shared_ptr<ConnectionConfig> cc);
bool operator==(const ConnectionGroup &rhs) const {
return conngroup_id == rhs.conngroup_id
&& name == rhs.name;
}
private:
Connections m_connections;
};
class ConnectionConfig: public ConnectionNode {
public:
ConnectionConfig(); // Default object containing invalid uuid
ConnectionGroup* parent();
void setParent(ConnectionGroup *grp);
void setUuid(const QUuid &uuid);
const QUuid &uuid() const;
@ -102,6 +134,7 @@ private:
PasswordState m_passwordState = PasswordState::NotStored;
bool m_dirty = false;
ConnectionGroup* m_group;
static void strToEnv(QProcessEnvironment &env, const QString &var, const std::string &val);