diff --git a/src/numbercompletionmodel.cpp b/src/numbercompletionmodel.cpp index 3b1704049f7afc83af02809e5443c75567757739..677311d7ec3ebcb08c0945381c2909bf91a58c2a 100644 --- a/src/numbercompletionmodel.cpp +++ b/src/numbercompletionmodel.cpp @@ -72,6 +72,7 @@ public: Call* m_pCall ; bool m_Enabled ; bool m_UseUnregisteredAccount; + bool m_DisplayMostUsedNumbers; QHash<Account*,TemporaryContactMethod*> m_hSipIaxTemporaryNumbers; QHash<Account*,TemporaryContactMethod*> m_hRingTemporaryNumbers; @@ -88,7 +89,7 @@ private: NumberCompletionModelPrivate::NumberCompletionModelPrivate(NumberCompletionModel* parent) : QObject(parent), q_ptr(parent), -m_pCall(nullptr),m_Enabled(false),m_UseUnregisteredAccount(true), m_Prefix(QString()) +m_pCall(nullptr),m_Enabled(false),m_UseUnregisteredAccount(true), m_Prefix(QString()),m_DisplayMostUsedNumbers(false) { //Create the temporary number list bool hasNonIp2Ip = false; @@ -163,7 +164,7 @@ QVariant NumberCompletionModel::data(const QModelIndex& index, int role ) const const ContactMethod* n = i.value(); const int weight = i.key (); - bool needAcc = (role>=100 || role == Qt::UserRole) && n->account() && n->account() != AvailableAccountModel::currentDefaultAccount() + bool needAcc = (role>=100 || role == Qt::UserRole) && n->account() /*&& n->account() != AvailableAccountModel::currentDefaultAccount()*/ && n->account()->alias() != DRing::Account::ProtocolNames::IP2IP; switch (static_cast<NumberCompletionModelPrivate::Columns>(index.column())) { @@ -280,7 +281,7 @@ void NumberCompletionModel::setCall(Call* call) void NumberCompletionModelPrivate::setPrefix(const QString& str) { m_Prefix = str; - const bool e = ((m_pCall && m_pCall->lifeCycleState() == Call::LifeCycleState::CREATION) || (!m_pCall)) && (!str.isEmpty()); + const bool e = ((m_pCall && m_pCall->lifeCycleState() == Call::LifeCycleState::CREATION) || (!m_pCall)) && ((m_DisplayMostUsedNumbers || !str.isEmpty())); if (m_Enabled != e) { m_Enabled = e; @@ -364,6 +365,17 @@ void NumberCompletionModelPrivate::updateModel() } } } + else if (m_DisplayMostUsedNumbers) { + //If enabled, display the most probable entries + const QVector<ContactMethod*> cl = PhoneDirectoryModel::instance()->getNumbersByPopularity(); + + for (int i=0;i<((cl.size()>=10)?10:cl.size());i++) { + ContactMethod* n = cl[i]; + q_ptr->beginInsertRows(QModelIndex(), m_hNumbers.size(), m_hNumbers.size()); + m_hNumbers.insert(getWeight(n),n); + q_ptr->endInsertRows(); + } + } } void NumberCompletionModelPrivate::getRange(QMap<QString,NumberWrapper*> map, const QString& prefix, QSet<ContactMethod*>& set) const @@ -494,6 +506,17 @@ bool NumberCompletionModel::isUsingUnregisteredAccounts() return d_ptr->m_UseUnregisteredAccount; } + +void NumberCompletionModel::setDisplayMostUsedNumbers(bool value) +{ + d_ptr->m_DisplayMostUsedNumbers = value; +} + +bool NumberCompletionModel::displayMostUsedNumbers() const +{ + return d_ptr->m_DisplayMostUsedNumbers; +} + bool NumberCompletionModelPrivate::accountAdded(Account* a) { bool hasNonIp2Ip = false; diff --git a/src/numbercompletionmodel.h b/src/numbercompletionmodel.h index b7821032d31848995eae07699285565bbae45f50..810e2d9fbb656c0dd40b2caa1fe98d5ee0df745d 100644 --- a/src/numbercompletionmodel.h +++ b/src/numbercompletionmodel.h @@ -36,6 +36,7 @@ public: //Properties Q_PROPERTY(QString prefix READ prefix) + Q_PROPERTY(bool displayMostUsedNumbers READ displayMostUsedNumbers WRITE setDisplayMostUsedNumbers) enum Role { ALTERNATE_ACCOUNT= 100, @@ -59,12 +60,14 @@ public: //Setters void setCall(Call* call); void setUseUnregisteredAccounts(bool value); + void setDisplayMostUsedNumbers(bool value); //Getters Call* call() const; ContactMethod* number(const QModelIndex& idx) const; bool isUsingUnregisteredAccounts(); QString prefix() const; + bool displayMostUsedNumbers() const; private: NumberCompletionModelPrivate* d_ptr;