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

autocompletion: Better handle copy-pasted ring hashes

Refs #71751
parent 012a2b17
No related branches found
No related tags found
No related merge requests found
...@@ -68,12 +68,13 @@ public: ...@@ -68,12 +68,13 @@ public:
//Attributes //Attributes
QMultiMap<int,ContactMethod*> m_hNumbers ; QMultiMap<int,ContactMethod*> m_hNumbers ;
QString m_Prefix ; URI m_Prefix ;
Call* m_pCall ; Call* m_pCall ;
bool m_Enabled ; bool m_Enabled ;
bool m_UseUnregisteredAccount; bool m_UseUnregisteredAccount;
QHash<Account*,TemporaryContactMethod*> m_hSipIaxTemporaryNumbers; QHash<Account*,TemporaryContactMethod*> m_hSipIaxTemporaryNumbers;
QHash<Account*,TemporaryContactMethod*> m_hRingTemporaryNumbers;
public Q_SLOTS: public Q_SLOTS:
void setPrefix(const QString& str); void setPrefix(const QString& str);
...@@ -87,7 +88,7 @@ private: ...@@ -87,7 +88,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_pCall(nullptr),m_Enabled(false),m_UseUnregisteredAccount(true), m_Prefix(QString())
{ {
//Create the temporary number list //Create the temporary number list
bool hasNonIp2Ip = false; bool hasNonIp2Ip = false;
...@@ -127,6 +128,14 @@ NumberCompletionModel::~NumberCompletionModel() ...@@ -127,6 +128,14 @@ NumberCompletionModel::~NumberCompletionModel()
delete cm; delete cm;
} }
l = d_ptr->m_hRingTemporaryNumbers.values();
d_ptr->m_hRingTemporaryNumbers.clear();
while(l.size()) {
TemporaryContactMethod* cm = l.takeAt(0);
delete cm;
}
delete d_ptr; delete d_ptr;
} }
...@@ -287,7 +296,13 @@ void NumberCompletionModelPrivate::setPrefix(const QString& str) ...@@ -287,7 +296,13 @@ void NumberCompletionModelPrivate::setPrefix(const QString& str)
} }
for(TemporaryContactMethod* cm : m_hSipIaxTemporaryNumbers) { for(TemporaryContactMethod* cm : m_hSipIaxTemporaryNumbers) {
cm->setUri(str); cm->setUri(m_Prefix);
}
if (m_Prefix.protocolHint() == URI::ProtocolHint::RING) {
for(TemporaryContactMethod* cm : m_hRingTemporaryNumbers) {
cm->setUri(m_Prefix);
}
} }
} }
...@@ -329,6 +344,17 @@ void NumberCompletionModelPrivate::updateModel() ...@@ -329,6 +344,17 @@ void NumberCompletionModelPrivate::updateModel()
} }
} }
if (m_Prefix.protocolHint() == URI::ProtocolHint::RING) {
for (TemporaryContactMethod* cm : m_hRingTemporaryNumbers) {
const int weight = getWeight(cm->account());
if (weight) {
q_ptr->beginInsertRows(QModelIndex(), m_hNumbers.size(), m_hNumbers.size());
m_hNumbers.insert(weight,cm);
q_ptr->endInsertRows();
}
}
}
for (ContactMethod* n : numbers) { for (ContactMethod* n : numbers) {
if (m_UseUnregisteredAccount || ((n->account() && n->account()->registrationState() == Account::RegistrationState::READY) if (m_UseUnregisteredAccount || ((n->account() && n->account()->registrationState() == Account::RegistrationState::READY)
|| !n->account())) { || !n->account())) {
...@@ -482,7 +508,12 @@ bool NumberCompletionModelPrivate::accountAdded(Account* a) ...@@ -482,7 +508,12 @@ bool NumberCompletionModelPrivate::accountAdded(Account* a)
m_hSipIaxTemporaryNumbers[a] = cm; m_hSipIaxTemporaryNumbers[a] = cm;
} }
break; break;
case Account::Protocol::RING: case Account::Protocol::RING: {
TemporaryContactMethod* cm = new TemporaryContactMethod();
cm->setAccount(a);
m_hRingTemporaryNumbers[a] = cm;
}
break;
case Account::Protocol::COUNT__: case Account::Protocol::COUNT__:
break; break;
} }
...@@ -494,7 +525,11 @@ void NumberCompletionModelPrivate::accountRemoved(Account* a) ...@@ -494,7 +525,11 @@ void NumberCompletionModelPrivate::accountRemoved(Account* a)
{ {
TemporaryContactMethod* cm = m_hSipIaxTemporaryNumbers[a]; TemporaryContactMethod* cm = m_hSipIaxTemporaryNumbers[a];
if (!cm)
cm = m_hRingTemporaryNumbers[a];
m_hSipIaxTemporaryNumbers[a] = nullptr; m_hSipIaxTemporaryNumbers[a] = nullptr;
m_hRingTemporaryNumbers [a] = nullptr;
setPrefix(q_ptr->prefix()); setPrefix(q_ptr->prefix());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment