diff --git a/src/credentialmodel.cpp b/src/credentialmodel.cpp index 58ebee4b05866df812db7fa9a57acd46bbb975c5..af3eb9aa965bff50ab01ff14b1a7c8e692814ebb 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 e71c75a8e1521b6859cf0e9951cb04b4d838d475..704ee5e51d095777e062b7487d94be7fe58c95b3 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); -