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
Branches
Tags
No related merge requests found
...@@ -72,6 +72,7 @@ public: ...@@ -72,6 +72,7 @@ public:
Call* m_pCall ; Call* m_pCall ;
bool m_Enabled ; bool m_Enabled ;
bool m_UseUnregisteredAccount; bool m_UseUnregisteredAccount;
bool m_DisplayMostUsedNumbers;
QHash<Account*,TemporaryContactMethod*> m_hSipIaxTemporaryNumbers; QHash<Account*,TemporaryContactMethod*> m_hSipIaxTemporaryNumbers;
QHash<Account*,TemporaryContactMethod*> m_hRingTemporaryNumbers; QHash<Account*,TemporaryContactMethod*> m_hRingTemporaryNumbers;
...@@ -88,7 +89,7 @@ private: ...@@ -88,7 +89,7 @@ private:
NumberCompletionModelPrivate::NumberCompletionModelPrivate(NumberCompletionModel* parent) : QObject(parent), q_ptr(parent), 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 //Create the temporary number list
bool hasNonIp2Ip = false; bool hasNonIp2Ip = false;
...@@ -163,7 +164,7 @@ QVariant NumberCompletionModel::data(const QModelIndex& index, int role ) const ...@@ -163,7 +164,7 @@ QVariant NumberCompletionModel::data(const QModelIndex& index, int role ) const
const ContactMethod* n = i.value(); const ContactMethod* n = i.value();
const int weight = i.key (); 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; && n->account()->alias() != DRing::Account::ProtocolNames::IP2IP;
switch (static_cast<NumberCompletionModelPrivate::Columns>(index.column())) { switch (static_cast<NumberCompletionModelPrivate::Columns>(index.column())) {
...@@ -280,7 +281,7 @@ void NumberCompletionModel::setCall(Call* call) ...@@ -280,7 +281,7 @@ void NumberCompletionModel::setCall(Call* call)
void NumberCompletionModelPrivate::setPrefix(const QString& str) void NumberCompletionModelPrivate::setPrefix(const QString& str)
{ {
m_Prefix = 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) { if (m_Enabled != e) {
m_Enabled = e; m_Enabled = e;
...@@ -364,6 +365,17 @@ void NumberCompletionModelPrivate::updateModel() ...@@ -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 void NumberCompletionModelPrivate::getRange(QMap<QString,NumberWrapper*> map, const QString& prefix, QSet<ContactMethod*>& set) const
...@@ -494,6 +506,17 @@ bool NumberCompletionModel::isUsingUnregisteredAccounts() ...@@ -494,6 +506,17 @@ bool NumberCompletionModel::isUsingUnregisteredAccounts()
return d_ptr->m_UseUnregisteredAccount; 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 NumberCompletionModelPrivate::accountAdded(Account* a)
{ {
bool hasNonIp2Ip = false; bool hasNonIp2Ip = false;
......
...@@ -36,6 +36,7 @@ public: ...@@ -36,6 +36,7 @@ public:
//Properties //Properties
Q_PROPERTY(QString prefix READ prefix) Q_PROPERTY(QString prefix READ prefix)
Q_PROPERTY(bool displayMostUsedNumbers READ displayMostUsedNumbers WRITE setDisplayMostUsedNumbers)
enum Role { enum Role {
ALTERNATE_ACCOUNT= 100, ALTERNATE_ACCOUNT= 100,
...@@ -59,12 +60,14 @@ public: ...@@ -59,12 +60,14 @@ public:
//Setters //Setters
void setCall(Call* call); void setCall(Call* call);
void setUseUnregisteredAccounts(bool value); void setUseUnregisteredAccounts(bool value);
void setDisplayMostUsedNumbers(bool value);
//Getters //Getters
Call* call() const; Call* call() const;
ContactMethod* number(const QModelIndex& idx) const; ContactMethod* number(const QModelIndex& idx) const;
bool isUsingUnregisteredAccounts(); bool isUsingUnregisteredAccounts();
QString prefix() const; QString prefix() const;
bool displayMostUsedNumbers() const;
private: private:
NumberCompletionModelPrivate* d_ptr; NumberCompletionModelPrivate* d_ptr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment