slightly optimize ConnectionListModel

-avoid object copies
-use some more bullet proof C++11 constructs
-avoid using a QRegExp, simple string matches are faster

Signed-off-by: Rolf Eike Beer <eike@sf-mail.de>
This commit is contained in:
Rolf Eike Beer 2019-03-22 21:25:59 +01:00 committed by Dirk Hohndel
parent 5ad52db451
commit bf9a526d63
2 changed files with 11 additions and 9 deletions

View file

@ -21,7 +21,7 @@ int ConnectionListModel::rowCount(const QModelIndex&) const
return m_addresses.count();
}
void ConnectionListModel::addAddress(const QString address)
void ConnectionListModel::addAddress(const QString &address)
{
if (!m_addresses.contains(address)) {
beginInsertRows(QModelIndex(), rowCount(), rowCount());
@ -37,8 +37,10 @@ void ConnectionListModel::removeAllAddresses()
endRemoveRows();
}
int ConnectionListModel::indexOf(QString address)
int ConnectionListModel::indexOf(const QString &address) const
{
const QRegExp re(".*" + address + ".*", Qt::CaseInsensitive);
return m_addresses.indexOf(re);
for (int i = 0; i < m_addresses.count(); i++)
if (m_addresses.at(i).contains(address, Qt::CaseInsensitive))
return i;
return -1;
}

View file

@ -6,12 +6,12 @@
class ConnectionListModel : public QAbstractListModel {
Q_OBJECT
public:
ConnectionListModel(QObject *parent = 0);
QVariant data(const QModelIndex &index, int role) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
void addAddress(const QString address);
ConnectionListModel(QObject *parent = nullptr);
QVariant data(const QModelIndex &index, int role) const override;
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
void addAddress(const QString &address);
void removeAllAddresses();
int indexOf(QString address);
int indexOf(const QString &address) const;
private:
QStringList m_addresses;
};