Skip to content
Snippets Groups Projects
Commit 6da5936f authored by Stepan Salenikovich's avatar Stepan Salenikovich
Browse files

lrc: fix invalid idices in NumberCompletionModel

Refs #71148
parent 560a47a8
No related branches found
No related tags found
No related merge requests found
...@@ -105,7 +105,9 @@ QHash<int,QByteArray> NumberCompletionModel::roleNames() const ...@@ -105,7 +105,9 @@ QHash<int,QByteArray> NumberCompletionModel::roleNames() const
QVariant NumberCompletionModel::data(const QModelIndex& index, int role ) const QVariant NumberCompletionModel::data(const QModelIndex& index, int role ) const
{ {
if (!index.isValid()) return QVariant(); if (!index.isValid())
return QVariant();
const QMap<int,ContactMethod*>::iterator i = d_ptr->m_hNumbers.end()-1-index.row(); const QMap<int,ContactMethod*>::iterator i = d_ptr->m_hNumbers.end()-1-index.row();
const ContactMethod* n = i.value(); const ContactMethod* n = i.value();
const int weight = i.key (); const int weight = i.key ();
...@@ -220,8 +222,9 @@ void NumberCompletionModel::setPrefix(const QString& str) ...@@ -220,8 +222,9 @@ void NumberCompletionModel::setPrefix(const QString& str)
if (d_ptr->m_Enabled) if (d_ptr->m_Enabled)
d_ptr->updateModel(); d_ptr->updateModel();
else { else {
beginRemoveRows(QModelIndex(), 0, d_ptr->m_hNumbers.size()-1);
d_ptr->m_hNumbers.clear(); d_ptr->m_hNumbers.clear();
emit layoutChanged(); endRemoveRows();
} }
} }
...@@ -241,20 +244,24 @@ ContactMethod* NumberCompletionModel::number(const QModelIndex& idx) const ...@@ -241,20 +244,24 @@ ContactMethod* NumberCompletionModel::number(const QModelIndex& idx) const
void NumberCompletionModelPrivate::updateModel() void NumberCompletionModelPrivate::updateModel()
{ {
QSet<ContactMethod*> numbers; QSet<ContactMethod*> numbers;
q_ptr->beginResetModel(); q_ptr->beginRemoveRows(QModelIndex(), 0, m_hNumbers.size()-1);
m_hNumbers.clear(); m_hNumbers.clear();
q_ptr->endRemoveRows();
if (!m_Prefix.isEmpty()) { if (!m_Prefix.isEmpty()) {
locateNameRange ( m_Prefix, numbers ); locateNameRange ( m_Prefix, numbers );
locateNumberRange( m_Prefix, numbers ); locateNumberRange( m_Prefix, numbers );
foreach(ContactMethod* n,numbers) { foreach(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())) {
q_ptr->beginInsertRows(QModelIndex(), m_hNumbers.size(), m_hNumbers.size());
m_hNumbers.insert(getWeight(n),n); m_hNumbers.insert(getWeight(n),n);
q_ptr->endInsertRows();
qDebug() << "inserting at" << getWeight(n) << n->primaryName();
qDebug() << "rows: " << m_hNumbers.size();
}
} }
} }
q_ptr->endResetModel();
emit q_ptr->layoutChanged();
} }
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
......
...@@ -53,6 +53,8 @@ public: ...@@ -53,6 +53,8 @@ public:
virtual bool setData ( const QModelIndex& index, const QVariant &value, int role ) override; virtual bool setData ( const QModelIndex& index, const QVariant &value, int role ) override;
virtual int columnCount( const QModelIndex& parent = QModelIndex() ) const override; virtual int columnCount( const QModelIndex& parent = QModelIndex() ) const override;
virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override; virtual QVariant headerData ( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
// virtual QModelIndex index ( int row, int column, const QModelIndex& parent=QModelIndex()) const override;
virtual QHash<int,QByteArray> roleNames() const override; virtual QHash<int,QByteArray> roleNames() const override;
//Setters //Setters
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment