[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:29 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-runner.git;a=commitdiff;h=73349d2
The following commit has been merged in the master branch:
commit 73349d23d73ad9c927564995e13da6962908b19f
Author: Dan Vrátil <dan at progdan.cz>
Date: Sun Jul 1 14:30:50 2012 +0200
Store AccountPtr and ContactPtr as QueryMatch::data()
Storing the account and contact directly makes it not just
faster to retrieve them in run(), also solves issues with
passing around an account/contact ID (whose syntax can change).
REVIEW: 105398
BUG: 302176
---
src/contactrunner.cpp | 68 ++++++++++++++++++++++++---------------------------
1 file changed, 32 insertions(+), 36 deletions(-)
diff --git a/src/contactrunner.cpp b/src/contactrunner.cpp
index db39190..0d48c79 100644
--- a/src/contactrunner.cpp
+++ b/src/contactrunner.cpp
@@ -42,7 +42,13 @@
#include <QAction>
+struct ContactInfo {
+ Tp::AccountPtr account;
+ Tp::ContactPtr contact;
+};
+
Q_DECLARE_METATYPE(QModelIndex);
+Q_DECLARE_METATYPE(ContactInfo);
ContactRunner::ContactRunner(QObject *parent, const QVariantList &args):
Plasma::AbstractRunner(parent, args),
@@ -111,37 +117,31 @@ void ContactRunner::accountManagerReady(Tp::PendingOperation *operation)
QList< QAction* > ContactRunner::actionsForMatch(const Plasma::QueryMatch &match)
{
QList< QAction* > actions;
- /* Remove the ID prefix added by Krunner */
- QString id = match.id().remove("KRunnerKTpContacts_");
- QStringList ids = id.split(',', QString::SkipEmptyParts);
- if (ids.count() != 2) {
- kWarning() << "Received invalid ID" << ids;
+ ContactInfo data = match.data().value< ContactInfo >();
+ if (!data.contact) {
return actions;
}
- ContactModelItem *contactItem = qobject_cast< ContactModelItem* >(m_accountsModel->contactItemForId(ids.first(), ids.at(1)));
- if (!contactItem) {
- return actions;
- }
+ Tp::ContactCapabilities capabilities = data.contact->capabilities();
- if (contactItem->data(AccountsModel::TextChatCapabilityRole).toBool()) {
+ if (capabilities.textChats()) {
actions.append(action("start-text-chat"));
}
- if (contactItem->data(AccountsModel::AudioCallCapabilityRole).toBool()) {
+ if (capabilities.audioCalls()) {
actions.append(action("start-audio-call"));
}
- if (contactItem->data(AccountsModel::VideoCallCapabilityRole).toBool()) {
+ if (capabilities.videoCallsWithAudio()) {
actions.append(action("start-video-call"));
}
- if (contactItem->data(AccountsModel::FileTransferCapabilityRole).toBool()) {
+ if (capabilities.fileTransfers()) {
actions.append(action("start-file-transfer"));
}
- if (contactItem->data(AccountsModel::DesktopSharingCapabilityRole).toBool()) {
+ if (capabilities.streamTubes("rfb")) {
actions.append(action("start-desktop-sharing"));
}
@@ -213,9 +213,20 @@ void ContactRunner::match(Plasma::RunnerContext &context)
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 */
+ ContactInfo data;
+ data.account = accountIndex.data(AccountsModel::ItemRole).value< AccountsModelItem* >()->account();
+ data.contact = contactIndex.data(AccountsModel::ItemRole).value< ContactModelItem* >()->contact();
+ match.setData(qVariantFromValue(data));
+
match.setText(name.append(" (%1)").arg(accountIndex.data(AccountsModel::DisplayNameRole).toString()));
- match.setId(accountIndex.data(AccountsModel::IdRole).toString() + ',' +
- contactIndex.data(AccountsModel::IdRole).toString());
match.setType(Plasma::QueryMatch::ExactMatch);
QString iconName;
@@ -273,29 +284,14 @@ void ContactRunner::run(const Plasma::RunnerContext &context, const Plasma::Quer
{
Q_UNUSED(context)
- /* Remove the ID prefix added by Krunner */
- QString id = match.id().remove("KRunnerKTpContacts_");
-
- QStringList ids = id.split(',', QString::SkipEmptyParts);
- if (ids.count() != 2) {
- kWarning() << "Received invalid ID" << ids;
- return;
- }
-
- AccountsModelItem *accountItem = qobject_cast< AccountsModelItem* >(m_accountsModel->accountItemForId(ids.first()));
- if (!accountItem) {
- kWarning() << "Account" << ids.first() << "not found in the model!";
- return;
- }
-
- ContactModelItem *item = qobject_cast< ContactModelItem* >(m_accountsModel->contactItemForId(ids.first(), ids.at(1)));
- if (!item) {
- kWarning() << "Item" << match.id() << "not found in the model!";
+ ContactInfo data = match.data().value< ContactInfo >();
+ if (!data.account || !data.contact) {
+ kWarning() << "Running invalid contact info";
return;
}
- Tp::AccountPtr account = accountItem->account();
- Tp::ContactPtr contact = item->contact();
+ Tp::AccountPtr account = data.account;
+ Tp::ContactPtr contact = data.contact;
Tp::ChannelRequestHints hints;
hints.setHint("org.freedesktop.Telepathy.ChannelRequest", "DelegateToPreferredHandler", QVariant(true));
--
ktp-contact-runner packaging
More information about the pkg-kde-commits
mailing list