diff --git a/src/account.cpp b/src/account.cpp index ca5f4ff98fab623243b4d128e9980ab9e87deb0a..eb4702a11e42adfaff3ff47eb86a62a33e6f5563 100644 --- a/src/account.cpp +++ b/src/account.cpp @@ -90,8 +90,7 @@ m_pStatusModel(nullptr),m_LastTransportCode(0),m_RegistrationState(Account::Regi m_UseDefaultPort(false),m_pProtocolModel(nullptr),m_pBootstrapModel(nullptr),m_RemoteEnabledState(false), m_HaveCalled(false),m_TotalCount(0),m_LastWeekCount(0),m_LastTrimCount(0),m_LastUsed(0),m_pKnownCertificates(nullptr), m_pBannedCertificates(nullptr), m_pAllowedCertificates(nullptr),m_InternalId(++p_sAutoIncrementId), -m_pNetworkInterfaceModel(nullptr),m_pAllowedCerts(nullptr),m_pBannedCerts(nullptr), m_AllowIncomingFromHistory(true), -m_AllowIncomingFromContact(true) +m_pNetworkInterfaceModel(nullptr),m_pAllowedCerts(nullptr),m_pBannedCerts(nullptr) { } @@ -948,12 +947,28 @@ bool Account::allowIncomingFromUnknown() const bool Account::allowIncomingFromHistory() const { - return d_ptr->m_AllowIncomingFromHistory; + if (protocol() != Account::Protocol::RING) + return false; + + return d_ptr->accountDetail(DRing::Account::ConfProperties::ALLOW_CERT_FROM_HISTORY) IS_TRUE; } bool Account::allowIncomingFromContact() const { - return d_ptr->m_AllowIncomingFromContact; + if (protocol() != Account::Protocol::RING) + return false; + + return d_ptr->accountDetail(DRing::Account::ConfProperties::ALLOW_CERT_FROM_CONTACT) IS_TRUE; +} + +int Account::activeCallLimit() const +{ + return d_ptr->accountDetail(DRing::Account::ConfProperties::ACTIVE_CALL_LIMIT).toInt(); +} + +bool Account::hasActiveCallLimit() const +{ + return activeCallLimit() > -1; } @@ -1143,6 +1158,10 @@ QVariant Account::roleData(int role) const return allowIncomingFromContact(); case CAST(Account::Role::AllowIncomingFromUnknown ): return allowIncomingFromUnknown(); + case CAST(Account::Role::ActiveCallLimit): + return activeCallLimit(); + case CAST(Account::Role::HasActiveCallLimit): + return hasActiveCallLimit(); default: return QVariant(); } @@ -1185,11 +1204,17 @@ bool Account::supportScheme( URI::SchemeType type ) bool Account::allowCertificate(Certificate* c) { + if (protocol() != Account::Protocol::RING) + return false; + return CertificateModel::instance()->d_ptr->allowCertificate(c, this); } bool Account::banCertificate(Certificate* c) { + if (protocol() != Account::Protocol::RING) + return false; + return CertificateModel::instance()->d_ptr->banCertificate(c, this); } @@ -1687,16 +1712,35 @@ void Account::setAllowIncomingFromUnknown(bool value) void Account::setAllowIncomingFromHistory(bool value) { - d_ptr->m_AllowIncomingFromHistory = value; + if (protocol() != Account::Protocol::RING) + return; + + d_ptr->setAccountProperty(DRing::Account::ConfProperties::ALLOW_CERT_FROM_HISTORY, value TO_BOOL); performAction(Account::EditAction::MODIFY); } void Account::setAllowIncomingFromContact(bool value) { - d_ptr->m_AllowIncomingFromContact = value; + if (protocol() != Account::Protocol::RING) + return; + + d_ptr->setAccountProperty(DRing::Account::ConfProperties::ALLOW_CERT_FROM_CONTACT, value TO_BOOL); performAction(Account::EditAction::MODIFY); } +void Account::setActiveCallLimit(int value ) +{ + d_ptr->setAccountProperty(DRing::Account::ConfProperties::ACTIVE_CALL_LIMIT, QString::number(value)); +} + +void Account::setHasActiveCallLimit(bool value ) +{ + if ((!value) && activeCallLimit() != -1) + return; + + setActiveCallLimit(value?1:-1); +} + ///Set the DTMF type void Account::setDTMFType(DtmfType type) { @@ -1899,6 +1943,12 @@ void Account::setRoleData(int role, const QVariant& value) case CAST(Account::Role::AllowIncomingFromUnknown ): setAllowIncomingFromUnknown(value.toBool()); break; + case CAST(Account::Role::ActiveCallLimit): + return setActiveCallLimit(value.toInt()); + break; + case CAST(Account::Role::HasActiveCallLimit): + return setHasActiveCallLimit(value.toBool()); + break; } } #undef CAST diff --git a/src/account.h b/src/account.h index aa3546766e2a0a654b5df48022b0a8acc166ce36..d9abfe89899fdf8bc623b5bb3096f6dd46b3c9c8 100644 --- a/src/account.h +++ b/src/account.h @@ -287,7 +287,9 @@ class LIB_EXPORT Account : public QObject { AllowedCertificatesModel = 186, AllowIncomingFromHistory = 187, AllowIncomingFromContact = 188, - AllowIncomingFromUnknown = 189 + AllowIncomingFromUnknown = 189, + ActiveCallLimit = 190, + HasActiveCallLimit = 191 }; ///@enum RoleState Whether a role can be used in a certain context @@ -412,6 +414,8 @@ class LIB_EXPORT Account : public QObject { bool allowIncomingFromUnknown () const; bool allowIncomingFromHistory () const; bool allowIncomingFromContact () const; + int activeCallLimit () const; + bool hasActiveCallLimit () const; bool isUsedForOutgogingCall () const; uint totalCallCount () const; @@ -472,6 +476,7 @@ class LIB_EXPORT Account : public QObject { void setAudioPortMin (int port ); void setVideoPortMax (int port ); void setVideoPortMin (int port ); + void setActiveCallLimit (int value ); void setDTMFType (DtmfType type); void setUserAgent (const QString& agent); void setUpnpEnabled (bool enable); @@ -481,6 +486,7 @@ class LIB_EXPORT Account : public QObject { void setAllowIncomingFromHistory (bool value ); void setAllowIncomingFromContact (bool value ); void setAllowIncomingFromUnknown (bool value ); + void setHasActiveCallLimit (bool value ); void setRoleData(int role, const QVariant& value); diff --git a/src/accountmodel.cpp b/src/accountmodel.cpp index 605b2ab88f2ab69225eba6dd200f221323d83245..f141afd0c5b4fbe26c63de546929f083a2215e73 100644 --- a/src/accountmodel.cpp +++ b/src/accountmodel.cpp @@ -184,6 +184,8 @@ QHash<int,QByteArray> AccountModel::roleNames() const roles.insert(CAST(Account::Role::AllowIncomingFromHistory ) ,QByteArray("allowIncomingFromHistory" )); roles.insert(CAST(Account::Role::AllowIncomingFromContact ) ,QByteArray("allowIncomingFromContact" )); roles.insert(CAST(Account::Role::AllowIncomingFromUnknown ) ,QByteArray("allowIncomingFromUnknown" )); + roles.insert(CAST(Account::Role::ActiveCallLimit ) ,QByteArray("activeCallLimit" )); + roles.insert(CAST(Account::Role::HasActiveCallLimit ) ,QByteArray("hasActiveCallLimit" )); } return roles; } diff --git a/src/private/account_p.h b/src/private/account_p.h index 8c2b278be200472edbaa727e213b734d65503e08..f8a363ae61ba15676df252f39b71b0c840c1c319 100644 --- a/src/private/account_p.h +++ b/src/private/account_p.h @@ -136,8 +136,6 @@ public: DaemonCertificateCollection* m_pAllowedCerts ; DaemonCertificateCollection* m_pBannedCerts ; Account::EditState m_CurrentState ; - bool m_AllowIncomingFromHistory; - bool m_AllowIncomingFromContact; QHash<int, Account::RoleStatus> m_hRoleStatus;