[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