From 7cf1b77af79e953d25d70b2ed8cc1287de762583 Mon Sep 17 00:00:00 2001 From: Alexandre Lision <alexandre.lision@savoirfairelinux.com> Date: Thu, 4 Feb 2016 15:26:10 -0500 Subject: [PATCH] credential: create credentials on demand Tuleap: #342 Change-Id: Id28bb9a3248f7730e72001fe484ce0a224cd40ca --- src/credentialmodel.cpp | 21 ++++++++++++++------- src/credentialmodel.h | 3 +-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/credentialmodel.cpp b/src/credentialmodel.cpp index 58ebee4b..af3eb9aa 100644 --- a/src/credentialmodel.cpp +++ b/src/credentialmodel.cpp @@ -515,20 +515,27 @@ bool CredentialModel::performAction(const CredentialModel::EditAction action) return curState != d_ptr->m_EditState; } -Credential* CredentialModel::primaryCredential(Credential::Type type) const +/* + * Return the primary credential's set of specified type + * @return credential object, new empty one if none existed. + */ +Credential* CredentialModel::primaryCredential(Credential::Type type) { switch(type) { case Credential::Type::STUN: - if (d_ptr->m_pStunCat && d_ptr->m_pStunCat->m_lChildren.size()) - return d_ptr->m_pStunCat->m_lChildren.first()->m_pCredential; + if (!d_ptr->m_pStunCat || !d_ptr->m_pStunCat->m_lChildren.size()) + addCredentials(Credential::Type::STUN); + return d_ptr->m_pStunCat->m_lChildren.first()->m_pCredential; break; case Credential::Type::TURN: - if (d_ptr->m_pTurnCat && d_ptr->m_pTurnCat->m_lChildren.size()) - return d_ptr->m_pTurnCat->m_lChildren.first()->m_pCredential; + if (!d_ptr->m_pTurnCat || !d_ptr->m_pTurnCat->m_lChildren.size()) + addCredentials(Credential::Type::TURN); + return d_ptr->m_pTurnCat->m_lChildren.first()->m_pCredential; break; case Credential::Type::SIP: - if (d_ptr->m_pSipCat && d_ptr->m_pSipCat->m_lChildren.size()) - return d_ptr->m_pSipCat->m_lChildren.first()->m_pCredential; + if (!d_ptr->m_pSipCat || !d_ptr->m_pSipCat->m_lChildren.size()) + addCredentials(Credential::Type::SIP); + return d_ptr->m_pSipCat->m_lChildren.first()->m_pCredential; break; case Credential::Type::COUNT__: break; diff --git a/src/credentialmodel.h b/src/credentialmodel.h index e71c75a8..704ee5e5 100644 --- a/src/credentialmodel.h +++ b/src/credentialmodel.h @@ -87,7 +87,7 @@ public: CredentialModel::EditState editState() const; QAbstractItemModel* availableTypeModel() const; QItemSelectionModel* availableTypeSelectionModel() const; - Credential* primaryCredential(Credential::Type type = Credential::Type::SIP) const; + Credential* primaryCredential(Credential::Type type = Credential::Type::SIP); //Operator CredentialModel* operator<<(CredentialModel::EditAction& action); @@ -102,4 +102,3 @@ private: Q_DECLARE_METATYPE(CredentialModel*) CredentialModel* LIB_EXPORT operator<<(CredentialModel* a, CredentialModel::EditAction action); - -- GitLab