[SCM] ktp-contact-runner packaging branch, master, updated. debian/15.12.1-2-244-g38a1f58
Maximiliano Curia
maxy at moszumanska.debian.org
Sat May 28 17:50:33 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-runner.git;a=commitdiff;h=31e8415
The following commit has been merged in the master branch:
commit 31e8415792f337d1463a42a5f57f85268f20eb18
Author: David Edmundson <kde at davidedmundson.co.uk>
Date: Tue Oct 2 22:44:47 2012 +0100
Don't use an entire model to loop through contacts
REVIEW: 106700
---
src/contactrunner.cpp | 50 +++++++++++++++++++-------------------------------
src/contactrunner.h | 3 +--
2 files changed, 20 insertions(+), 33 deletions(-)
diff --git a/src/contactrunner.cpp b/src/contactrunner.cpp
index d44017d..c19bab7 100644
--- a/src/contactrunner.cpp
+++ b/src/contactrunner.cpp
@@ -55,7 +55,6 @@ Q_DECLARE_METATYPE(MatchInfo);
ContactRunner::ContactRunner(QObject *parent, const QVariantList &args):
Plasma::AbstractRunner(parent, args),
- m_accountsModel(new AccountsModel(this)),
m_globalPresence(new KTp::GlobalPresence(this))
{
Q_UNUSED(args);
@@ -142,7 +141,6 @@ void ContactRunner::accountManagerReady(Tp::PendingOperation *operation)
kDebug() << "Accounts manager is ready!";
- m_accountsModel->setAccountManager(m_accountManager);
m_globalPresence->setAccountManager(m_accountManager);
}
@@ -266,7 +264,7 @@ void ContactRunner::run(const Plasma::RunnerContext &context, const Plasma::Quer
return;
}
- foreach (const QString &filename, filenames) {
+ Q_FOREACH (const QString &filename, filenames) {
Tp::FileTransferChannelCreationProperties properties(
filename, KMimeType::findByFileContent(filename)->name());
@@ -292,34 +290,34 @@ void ContactRunner::run(const Plasma::RunnerContext &context, const Plasma::Quer
}
}
-bool ContactRunner::hasCapability(const QModelIndex &contact, AccountsFilterModel::CapabilityFilterFlag capability) const
+bool ContactRunner::hasCapability(const Tp::ContactPtr &contact, AccountsFilterModel::CapabilityFilterFlag capability) const
{
if (capability == AccountsFilterModel::DoNotFilterByCapability) {
return true;
}
if ((capability == AccountsFilterModel::FilterByTextChatCapability) &&
- contact.data(AccountsModel::TextChatCapabilityRole).toBool()) {
+ contact->capabilities().textChats()) {
return true;
}
if ((capability == AccountsFilterModel::FilterByAudioCallCapability) &&
- contact.data(AccountsModel::AudioCallCapabilityRole).toBool()) {
+ contact->capabilities().audioCalls()) {
return true;
}
if ((capability == AccountsFilterModel::FilterByVideoCallCapability) &&
- contact.data(AccountsModel::VideoCallCapabilityRole).toBool()) {
+ contact->capabilities().videoCalls()) {
return true;
}
if ((capability == AccountsFilterModel::FilterByFileTransferCapability) &&
- contact.data(AccountsModel::FileTransferCapabilityRole).toBool()) {
+ contact->capabilities().fileTransfers()) {
return true;
}
if ((capability == AccountsFilterModel::FilterByDesktopSharingCapability) &&
- contact.data(AccountsModel::DesktopSharingCapabilityRole).toBool()) {
+ contact->capabilities().streamTubes(QLatin1String("org.freedesktop.Telepathy.Client.krfb_rfb_handler"))) {
return true;
}
@@ -363,45 +361,35 @@ void ContactRunner::matchContacts(Plasma::RunnerContext &context)
contactQuery = term;
}
- int accountsCnt = m_accountsModel->rowCount();
- for (int i = 0; (i < accountsCnt) && context.isValid(); i++) {
+ Q_FOREACH (const Tp::AccountPtr &account, m_accountManager->allAccounts()) {
- QModelIndex accountIndex = m_accountsModel->index(i, 0);
+ if (account->connection().isNull() || account->connection()->contactManager()->state() != Tp::ContactListStateSuccess) {
+ continue;
+ }
- int contactsCount = m_accountsModel->rowCount(accountIndex);
- for (int j = 0; (j < contactsCount) && context.isValid(); j++) {
+ Q_FOREACH (const Tp::ContactPtr &contact, account->connection()->contactManager()->allKnownContacts()) {
Plasma::QueryMatch match(this);
qreal relevance = 0.1;
- QModelIndex contactIndex = m_accountsModel->index(j, 0, accountIndex);
-
- if (!hasCapability(contactIndex, filterFlag)) {
+ if (!hasCapability(contact, filterFlag)) {
continue;
}
- QString name = contactIndex.data(AccountsModel::AliasRole).toString();
+ const QString &name = contact->alias();
if (!name.contains(contactQuery, Qt::CaseInsensitive)) {
continue;
}
- AccountsModelItem *accountItem = accountIndex.data(AccountsModel::ItemRole).value< AccountsModelItem* >();
- ContactModelItem *contactItem = contactIndex.data(AccountsModel::ItemRole).value< ContactModelItem* >();
- if (!accountItem || !contactItem) {
- continue;
- }
-
- /* Store AccountsModelItem and ContactsModelItem as the data of match so that it can
- * be retrieved quickly later */
MatchInfo data;
- data.account = accountIndex.data(AccountsModel::ItemRole).value< AccountsModelItem* >()->account();
- data.contact = contactIndex.data(AccountsModel::ItemRole).value< ContactModelItem* >()->contact();
+ data.account = account;
+ data.contact = contact;
match.setData(qVariantFromValue(data));
- match.setText(name + QLatin1String(" (") + accountIndex.data(AccountsModel::DisplayNameRole).toString() + ')');
+ match.setText(name + QLatin1String(" (") + account->displayName() + ')');
match.setType(Plasma::QueryMatch::ExactMatch);
- KTp::Presence presence = contactIndex.data(AccountsModel::PresenceRole).value< KTp::Presence >();
+ KTp::Presence presence(contact->presence());
switch (presence.type()) {
case Tp::ConnectionPresenceTypeAvailable:
relevance *= 10;
@@ -424,7 +412,7 @@ void ContactRunner::matchContacts(Plasma::RunnerContext &context)
break;
}
- QString iconFile = contactIndex.data(AccountsModel::AvatarRole).toString();
+ QString iconFile = contact->avatarData().fileName;
if (!iconFile.isEmpty() && QFile::exists(iconFile)) {
match.setIcon(QIcon(iconFile));
} else {
diff --git a/src/contactrunner.h b/src/contactrunner.h
index 55e7e9d..d646888 100644
--- a/src/contactrunner.h
+++ b/src/contactrunner.h
@@ -60,7 +60,7 @@ class ContactRunner : public Plasma::AbstractRunner
void accountManagerReady(Tp::PendingOperation *operation);
private:
- bool hasCapability(const QModelIndex &contact, AccountsFilterModel::CapabilityFilterFlag capability) const;
+ bool hasCapability(const Tp::ContactPtr &contact, AccountsFilterModel::CapabilityFilterFlag capability) const;
void matchPresence(Plasma::RunnerContext &context);
void matchContacts(Plasma::RunnerContext &context);
@@ -68,7 +68,6 @@ class ContactRunner : public Plasma::AbstractRunner
void addPresenceMatch(Plasma::RunnerContext &context, Tp::ConnectionPresenceType presence,
const QString &statusMessage);
- AccountsModel *m_accountsModel;
KTp::GlobalPresence *m_globalPresence;
Tp::AccountManagerPtr m_accountManager;
--
ktp-contact-runner packaging
More information about the pkg-kde-commits
mailing list