Skip to content
Snippets Groups Projects
Commit 43d98ae0 authored by Emmanuel Lepage Vallee's avatar Emmanuel Lepage Vallee
Browse files

autocompletion: Add option to show the most used contact methods

This option is disabled by default

Refs #72109
parent 2b811730
No related branches found
No related tags found
No related merge requests found
......@@ -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;
......
......@@ -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;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment