Skip to content

Commit

Permalink
make networksession more declarative friendly
Browse files Browse the repository at this point in the history
  • Loading branch information
Lorn Potter committed Feb 17, 2013
1 parent aae1617 commit 0a446a1
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 13 deletions.
36 changes: 30 additions & 6 deletions libconnman-qt/networksession.cpp
Expand Up @@ -15,21 +15,24 @@ NetworkSession::NetworkSession(QObject *parent) :
m_sessionAgent(0),
m_path("/ConnmanQmlSessionAgent")
{
createSession();
}

NetworkSession::~NetworkSession()
{
}

void NetworkSession::registerSession()
void NetworkSession::createSession()
{
if (m_path.isEmpty())
return;
if (m_sessionAgent) {
delete m_sessionAgent;
m_sessionAgent = 0;
}
m_sessionAgent = new SessionAgent(m_path ,this);
connect(m_sessionAgent,SIGNAL(settingsUpdated(QVariantMap)),
this,SLOT(sessionSettingsUpdated(QVariantMap)));

m_sessionAgent->registerSession();
}

QString NetworkSession::state() const
Expand Down Expand Up @@ -74,13 +77,13 @@ QString NetworkSession::connectionType() const

void NetworkSession::setAllowedBearers(const QStringList &bearers)
{
settingsMap.insert("AllowedBearers", qVariantFromValue(bearers));
settingsMap.insert("AllowedBearers", qVariantFromValue(bearers));
m_sessionAgent->setAllowedBearers(bearers);
}

void NetworkSession::setConnectionType(const QString &type)
{
settingsMap.insert("ConnectionType", qVariantFromValue(type));
settingsMap.insert("ConnectionType", qVariantFromValue(type));
m_sessionAgent->setConnectionType(type);
}

Expand All @@ -103,6 +106,24 @@ void NetworkSession::sessionSettingsUpdated(const QVariantMap &settings)
{
Q_FOREACH(const QString &name, settings.keys()) {
settingsMap.insert(name,settings[name]);

if (name == QLatin1String("State")) {
Q_EMIT stateChanged(settings[name].toString());
} else if (name == QLatin1String("Name")) {
Q_EMIT nameChanged(settings[name].toString());
} else if (name == QLatin1String("Bearer")) {
Q_EMIT bearerChanged(settings[name].toString());
} else if (name == QLatin1String("Interface")) {
Q_EMIT sessionInterfaceChanged(settings[name].toString());
} else if (name == QLatin1String("IPv4")) {
Q_EMIT ipv4Changed(ipv4());
} else if (name == QLatin1String("IPv6")) {
Q_EMIT ipv6Changed(ipv6());
} else if (name == QLatin1String("AllowedBearers")) {
Q_EMIT allowedBearersChanged(allowedBearers());
} else if (name == QLatin1String("ConnectionType")) {
Q_EMIT connectionTypeChanged(settings[name].toString());
}
}
Q_EMIT settingsChanged(settings);
}
Expand All @@ -114,5 +135,8 @@ QString NetworkSession::path() const

void NetworkSession::setPath(const QString &path)
{
m_path = path;
if (path != m_path) {
m_path = path;
createSession();
}
}
21 changes: 14 additions & 7 deletions libconnman-qt/networksession.h
Expand Up @@ -19,12 +19,12 @@ class SessionAgent;
class NetworkSession : public QObject
{
Q_OBJECT
Q_PROPERTY(QString state READ state)
Q_PROPERTY(QString name READ name)
Q_PROPERTY(QString bearer READ bearer)
Q_PROPERTY(QString sessionInterface READ sessionInterface)
Q_PROPERTY(QVariantMap ipv4 READ ipv4)
Q_PROPERTY(QVariantMap ipv6 READ ipv6)
Q_PROPERTY(QString state READ state NOTIFY stateChanged)
Q_PROPERTY(QString name READ name NOTIFY nameChanged)
Q_PROPERTY(QString bearer READ bearer NOTIFY bearerChanged)
Q_PROPERTY(QString sessionInterface READ sessionInterface NOTIFY sessionInterfaceChanged)
Q_PROPERTY(QVariantMap ipv4 READ ipv4 NOTIFY ipv4Changed)
Q_PROPERTY(QVariantMap ipv6 READ ipv6 NOTIFY ipv6Changed)

Q_PROPERTY(QString path READ path WRITE setPath)

Expand Down Expand Up @@ -56,18 +56,25 @@ class NetworkSession : public QObject
void connectionTypeChanged(const QString &type);
void settingsChanged(const QVariantMap &settings);

void stateChanged(const QString &state);
void nameChanged(const QString &name);
void bearerChanged(const QString &bearer);
void sessionInterfaceChanged(const QString &sessionInterface);
void ipv4Changed(const QVariantMap&settings);
void ipv6Changed(const QVariantMap&settings);

public slots:
void requestDestroy();
void requestConnect();
void requestDisconnect();
void sessionSettingsUpdated(const QVariantMap &settings);
void setPath(const QString &path);
void registerSession();

private:
SessionAgent *m_sessionAgent;
QVariantMap settingsMap;
QString m_path;
void createSession();
};

#endif // SESSIONSERVICE_H

0 comments on commit 0a446a1

Please sign in to comment.