[SCM] ktp-contact-list packaging branch, master, updated. debian/15.12.1-2-1070-g6c56f91

Maximiliano Curia maxy at moszumanska.debian.org
Sat May 28 00:11:34 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-contact-list.git;a=commitdiff;h=d623b93

The following commit has been merged in the master branch:
commit d623b93fc47117d8a6271ba51a951a26474aa45a
Author: David Edmundson <kde at davidedmundson.co.uk>
Date:   Sat Nov 17 11:41:19 2012 +0900

    Start to port away from deprecated ContactModelItems and switch to using KTp::Actions
---
 contact-list-widget.cpp | 149 +++++++++++++-----------------------------------
 contact-list-widget.h   |  20 ++++---
 contact-overlays.cpp    |   9 +--
 contact-overlays.h      |   4 +-
 context-menu.cpp        |  57 +++++++++---------
 main-widget.cpp         |   9 +--
 6 files changed, 93 insertions(+), 155 deletions(-)

diff --git a/contact-list-widget.cpp b/contact-list-widget.cpp
index a75558a..b7800b4 100644
--- a/contact-list-widget.cpp
+++ b/contact-list-widget.cpp
@@ -31,6 +31,7 @@
 #include <KTp/Models/contact-model-item.h>
 #include <KTp/Models/accounts-model-item.h>
 #include <KTp/Models/groups-model-item.h>
+#include <KTp/actions.h>
 
 #include <KGlobal>
 #include <KSharedConfig>
@@ -56,11 +57,6 @@
 #include "contact-delegate-compact.h"
 #include "contact-overlays.h"
 
-#define PREFERRED_TEXTCHAT_HANDLER "org.freedesktop.Telepathy.Client.KTp.TextUi"
-#define PREFERRED_FILETRANSFER_HANDLER "org.freedesktop.Telepathy.Client.KTp.FileTransfer"
-#define PREFERRED_AUDIO_VIDEO_HANDLER "org.freedesktop.Telepathy.Client.KTp.CallUi"
-#define PREFERRED_RFB_HANDLER "org.freedesktop.Telepathy.Client.krfb_rfb_handler"
-
 ContactListWidget::ContactListWidget(QWidget *parent)
     : QTreeView(parent),
       d_ptr(new ContactListWidgetPrivate)
@@ -205,9 +201,10 @@ void ContactListWidget::onContactListDoubleClicked(const QModelIndex& index)
         return;
     }
 
-    if (index.data(ContactsModel::ItemRole).userType() == qMetaTypeId<ContactModelItem*>()) {
-        kDebug() << "Text chat requested for index" << index;
-        startTextChannel(index.data(ContactsModel::ItemRole).value<ContactModelItem*>());
+    if (index.data(ContactsModel::TypeRole).toInt() == ContactsModel::ContactRowType) {
+        Tp::ContactPtr contact = index.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+        Tp::AccountPtr account = index.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
+        startTextChannel(account, contact);
     }
 }
 
@@ -238,20 +235,20 @@ void ContactListWidget::addOverlayButtons()
             d->delegate, SLOT(reshowStatusMessageSlot()));
 
 
-    connect(textOverlay, SIGNAL(activated(ContactModelItem*)),
-            this, SLOT(startTextChannel(ContactModelItem*)));
+    connect(textOverlay, SIGNAL(activated(Tp::AccountPtr, Tp::ContactPtr)),
+            this, SLOT(startTextChannel(Tp::AccountPtr, Tp::ContactPtr)));
 
-    connect(fileOverlay, SIGNAL(activated(ContactModelItem*)),
-            this, SLOT(startFileTransferChannel(ContactModelItem*)));
+    connect(fileOverlay, SIGNAL(activated(Tp::AccountPtr, Tp::ContactPtr)),
+            this, SLOT(startFileTransferChannel(Tp::AccountPtr, Tp::ContactPtr)));
 
-    connect(audioOverlay, SIGNAL(activated(ContactModelItem*)),
-            this, SLOT(startAudioChannel(ContactModelItem*)));
+    connect(audioOverlay, SIGNAL(activated(Tp::AccountPtr, Tp::ContactPtr)),
+            this, SLOT(startAudioChannel(Tp::AccountPtr, Tp::ContactPtr)));
 
-    connect(videoOverlay, SIGNAL(activated(ContactModelItem*)),
-            this, SLOT(startVideoChannel(ContactModelItem*)));
+    connect(videoOverlay, SIGNAL(activated(Tp::AccountPtr, Tp::ContactPtr)),
+            this, SLOT(startVideoChannel(Tp::AccountPtr, Tp::ContactPtr)));
 
-    connect(desktopOverlay, SIGNAL(activated(ContactModelItem*)),
-            this, SLOT(startDesktopSharing(ContactModelItem*)));
+    connect(desktopOverlay, SIGNAL(activated(Tp::AccountPtr, Tp::ContactPtr)),
+            this, SLOT(startDesktopSharing(Tp::AccountPtr, Tp::ContactPtr)));
 
 
     connect(this, SIGNAL(enableOverlays(bool)),
@@ -300,96 +297,46 @@ void ContactListWidget::toggleSortByPresence(bool sort)
     d->modelFilter->setSortMode(sort ? AccountsFilterModel::SortByPresence : AccountsFilterModel::DoNotSort);
 }
 
-void ContactListWidget::startTextChannel(ContactModelItem *contactItem)
+void ContactListWidget::startTextChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact)
 {
-    Q_D(ContactListWidget);
-
-    Q_ASSERT(contactItem);
-    Tp::ContactPtr contact = contactItem->contact();
-
-    kDebug() << "Requesting chat for contact" << contact->alias();
-
-    Tp::AccountPtr account = d->model->accountForContactItem(contactItem);
-
-    Tp::ChannelRequestHints hints;
-    hints.setHint("org.freedesktop.Telepathy.ChannelRequest","DelegateToPreferredHandler", QVariant(true));
-
-    Tp::PendingChannelRequest *channelRequest = account->ensureTextChat(contact,
-                                                                        QDateTime::currentDateTime(),
-                                                                        PREFERRED_TEXTCHAT_HANDLER,
-                                                                        hints);
-    connect(channelRequest, SIGNAL(finished(Tp::PendingOperation*)),
+    Tp::PendingOperation *op = KTp::Actions::startChat(account, contact, true);
+    connect(op, SIGNAL(finished(Tp::PendingOperation*)),
             SIGNAL(genericOperationFinished(Tp::PendingOperation*)));
 }
 
-void ContactListWidget::startAudioChannel(ContactModelItem *contactItem)
+void ContactListWidget::startAudioChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact)
 {
-    Q_D(ContactListWidget);
-
-    Q_ASSERT(contactItem);
-    Tp::ContactPtr contact = contactItem->contact();
-
-    kDebug() << "Requesting audio for contact" << contact->alias();
-
-    Tp::AccountPtr account = d->model->accountForContactItem(contactItem);
-
-    Tp::PendingChannelRequest *channelRequest = account->ensureAudioCall(contact,
-            QLatin1String("audio"), QDateTime::currentDateTime(), PREFERRED_AUDIO_VIDEO_HANDLER);
-
-    connect(channelRequest, SIGNAL(finished(Tp::PendingOperation*)),
+    Tp::PendingOperation *op = KTp::Actions::startAudioCall(account, contact);
+    connect(op, SIGNAL(finished(Tp::PendingOperation*)),
             SIGNAL(genericOperationFinished(Tp::PendingOperation*)));
 }
 
-void ContactListWidget::startVideoChannel(ContactModelItem *contactItem)
+void ContactListWidget::startVideoChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact)
 {
-    Q_D(ContactListWidget);
-
-    Q_ASSERT(contactItem);
-    Tp::ContactPtr contact = contactItem->contact();
-
-    kDebug() << "Requesting video for contact" << contact->alias();
-
-    Tp::AccountPtr account = d->model->accountForContactItem(contactItem);
-
-    Tp::PendingChannelRequest* channelRequest = account->ensureAudioVideoCall(contact,
-            QLatin1String("audio"), QLatin1String("video"),
-            QDateTime::currentDateTime(), PREFERRED_AUDIO_VIDEO_HANDLER);
-
-    connect(channelRequest, SIGNAL(finished(Tp::PendingOperation*)),
+    Tp::PendingOperation *op = KTp::Actions::startAudioVideoCall(account, contact);
+    connect(op, SIGNAL(finished(Tp::PendingOperation*)),
             SIGNAL(genericOperationFinished(Tp::PendingOperation*)));
 }
 
-void ContactListWidget::startDesktopSharing(ContactModelItem* contactItem)
+void ContactListWidget::startDesktopSharing(const Tp::AccountPtr &account, const Tp::ContactPtr &contact)
 {
-    Q_D(ContactListWidget);
-
-    Q_ASSERT(contactItem);
-    Tp::ContactPtr contact = contactItem->contact();
-
-    kDebug() << "Requesting desktop sharing for contact" << contact->alias();
-
-    Tp::AccountPtr account = d->model->accountForContactItem(contactItem);
-
-    Tp::PendingChannelRequest* channelRequest = account->createStreamTube(contact,
-                                                                          QLatin1String("rfb"),
-                                                                          QDateTime::currentDateTime(),
-                                                                          PREFERRED_RFB_HANDLER);
-
-    connect(channelRequest, SIGNAL(finished(Tp::PendingOperation*)),
+    Tp::PendingOperation *op = KTp::Actions::startDesktopSharing(account, contact);
+    connect(op, SIGNAL(finished(Tp::PendingOperation*)),
             SIGNAL(genericOperationFinished(Tp::PendingOperation*)));
 }
 
-void ContactListWidget::startFileTransferChannel(ContactModelItem *contactItem)
+void ContactListWidget::startLogViewer(const Tp::AccountPtr &account, const Tp::ContactPtr &contact)
 {
-    Q_D(ContactListWidget);
+    //log viewer is not a Tp handler so does not return a pending operation
+    KTp::Actions::openLogViewer(account, contact);
+}
 
-    Q_ASSERT(contactItem);
-    Tp::ContactPtr contact = contactItem->contact();
+void ContactListWidget::startFileTransferChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact)
+{
+    Q_D(ContactListWidget);
 
     kDebug() << "Requesting file transfer for contact" << contact->alias();
 
-    Tp::AccountPtr account = d->model->accountForContactItem(contactItem);
-
     QStringList filenames = KFileDialog::getOpenFileNames(KUrl("kfiledialog:///FileTransferLastDirectory"),
                                                           QString(),
                                                           this,
@@ -399,32 +346,18 @@ void ContactListWidget::startFileTransferChannel(ContactModelItem *contactItem)
         return;
     }
 
-    QDateTime now = QDateTime::currentDateTime();
-
-    requestFileTransferChannels(account, contact, filenames, now);
+    requestFileTransferChannels(account, contact, filenames);
 }
 
-void ContactListWidget::requestFileTransferChannels(const Tp::AccountPtr& account,
-                                                    const Tp::ContactPtr& contact,
-                                                    const QStringList& filenames,
-                                                    const QDateTime& userActionTime)
+void ContactListWidget::requestFileTransferChannels(const Tp::AccountPtr &account,
+                                                    const Tp::ContactPtr &contact,
+                                                    const QStringList &filenames)
 {
     Q_FOREACH (const QString &filename, filenames) {
-        kDebug() << "Filename:" << filename;
-        kDebug() << "Content type:" << KMimeType::findByFileContent(filename)->name();
-
-        Tp::FileTransferChannelCreationProperties fileTransferProperties(filename,
-                                                                        KMimeType::findByFileContent(filename)->name());
-
-        Tp::PendingChannelRequest* channelRequest = account->createFileTransfer(contact,
-                                                                                fileTransferProperties,
-                                                                                userActionTime,
-                                                                                PREFERRED_FILETRANSFER_HANDLER);
-
-        connect(channelRequest, SIGNAL(finished(Tp::PendingOperation*)),
+        Tp::PendingOperation *op = KTp::Actions::startFileTransfer(account, contact, filename);
+        connect(op, SIGNAL(finished(Tp::PendingOperation*)),
                 SIGNAL(genericOperationFinished(Tp::PendingOperation*)));
     }
-
 }
 
 void ContactListWidget::onNewGroupModelItemsInserted(const QModelIndex& index, int start, int end)
@@ -651,7 +584,7 @@ void ContactListWidget::dropEvent(QDropEvent *event)
         }
 
         QDateTime now = QDateTime::currentDateTime();
-        requestFileTransferChannels(account, contact, filenames, now);
+        requestFileTransferChannels(account, contact, filenames);
 
         event->acceptProposedAction();
     } else if (event->mimeData()->hasFormat("application/vnd.telepathy.contact")) {
diff --git a/contact-list-widget.h b/contact-list-widget.h
index 5305e0d..62d4359 100644
--- a/contact-list-widget.h
+++ b/contact-list-widget.h
@@ -67,17 +67,20 @@ private Q_SLOTS:
     void onNewGroupModelItemsInserted(const QModelIndex &index, int start, int end);
     void addOverlayButtons();
 
-    void startTextChannel(ContactModelItem *contactItem);
-    void startFileTransferChannel(ContactModelItem *contactItem);
-    void startAudioChannel(ContactModelItem *contactItem);
-    void startVideoChannel(ContactModelItem *contactItem);
-    void startDesktopSharing(ContactModelItem *contactItem);
+    void startTextChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact);
+    void startFileTransferChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact);
+    void startAudioChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact);
+    void startVideoChannel(const Tp::AccountPtr &account, const Tp::ContactPtr &contact);
+    void startDesktopSharing(const Tp::AccountPtr &account, const Tp::ContactPtr &contact);
+    void startLogViewer(const Tp::AccountPtr &account, const Tp::ContactPtr &contact);
+
 
 Q_SIGNALS:
     void enableOverlays(bool);
     void accountManagerReady(Tp::PendingOperation* op);
     void genericOperationFinished(Tp::PendingOperation* op);
 
+
 protected:
     void setDropIndicatorRect(const QRect &rect);
     virtual bool event(QEvent *event);
@@ -91,10 +94,9 @@ protected:
     virtual void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const;
 
 private:
-    void requestFileTransferChannels(const Tp::AccountPtr& account,
-                                     const Tp::ContactPtr& contact,
-                                     const QStringList& filenames,
-                                     const QDateTime& userActionTime);
+    void requestFileTransferChannels(const Tp::AccountPtr &account,
+                                     const Tp::ContactPtr &contact,
+                                     const QStringList &filenames);
 
     void loadGroupStatesFromConfig();
 
diff --git a/contact-overlays.cpp b/contact-overlays.cpp
index 0c1bcbe..5cc4ce5 100644
--- a/contact-overlays.cpp
+++ b/contact-overlays.cpp
@@ -113,10 +113,11 @@ void StartChannelContactOverlay::slotClicked(bool checked)
     Q_UNUSED(checked);
     QModelIndex index = button()->index();
 
-    if (index.isValid()) {
-        ContactModelItem* contactItem = index.data(ContactsModel::ItemRole).value<ContactModelItem*>();
-        if (contactItem) {
-            emit activated(contactItem);
+    if (index.isValid()) {        
+        Tp::AccountPtr account = index.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
+        Tp::ContactPtr contact = index.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+        if (account && contact) {
+            emit activated(account, contact);
         }
     }
 }
diff --git a/contact-overlays.h b/contact-overlays.h
index 6f9c3b2..c93d462 100644
--- a/contact-overlays.h
+++ b/contact-overlays.h
@@ -27,6 +27,8 @@
 #include "contact-delegate-overlay.h"
 #include "contact-view-hover-button.h"
 
+#include <TelepathyQt/Types>
+
 class ContactModelItem;
 
 class StartChannelContactOverlay : public ContactDelegateOverlay
@@ -41,7 +43,7 @@ public Q_SLOTS:
     virtual void setActive(bool active);
 
 Q_SIGNALS:
-    void activated(ContactModelItem *contactItem);
+    void activated(const Tp::AccountPtr &account, const Tp::ContactPtr &contact);
 
 protected:
 
diff --git a/context-menu.cpp b/context-menu.cpp
index 85968ce..bcb18c9 100644
--- a/context-menu.cpp
+++ b/context-menu.cpp
@@ -27,6 +27,7 @@
 #include <KToolInvocation>
 #include <KInputDialog>
 #include <KMessageBox>
+#include <KAction>
 
 #include <KTp/Models/contacts-model.h>
 #include <KTp/Models/contact-model-item.h>
@@ -352,22 +353,21 @@ void ContextMenu::onStartTextChatTriggered()
         return;
     }
 
-    ContactModelItem *item = m_currentIndex.data(ContactsModel::ItemRole).value<ContactModelItem*>();
-    if (item) {
-        m_mainWidget->startTextChannel(item);
+    Tp::ContactPtr contact = m_currentIndex.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+    Tp::AccountPtr account = m_currentIndex.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
+
+    if (contact && account) {
+        m_mainWidget->startTextChannel(account, contact);
     }
 }
 
 void ContextMenu::onStartAudioChatTriggered()
 {
-    if (!m_currentIndex.isValid()) {
-        kDebug() << "Invalid index provided.";
-        return;
-    }
+    Tp::ContactPtr contact = m_currentIndex.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+    Tp::AccountPtr account = m_currentIndex.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
 
-    ContactModelItem *item = m_currentIndex.data(ContactsModel::ItemRole).value<ContactModelItem*>();
-    if (item) {
-        m_mainWidget->startAudioChannel(item);
+    if (contact && account) {
+        m_mainWidget->startAudioChannel(account, contact);
     }
 }
 
@@ -378,9 +378,11 @@ void ContextMenu::onStartVideoChatTriggered()
         return;
     }
 
-    ContactModelItem *item = m_currentIndex.data(ContactsModel::ItemRole).value<ContactModelItem*>();
-    if (item) {
-        m_mainWidget->startVideoChannel(item);
+    Tp::ContactPtr contact = m_currentIndex.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+    Tp::AccountPtr account = m_currentIndex.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
+
+    if (contact && account) {
+        m_mainWidget->startVideoChannel(account, contact);
     }
 }
 
@@ -391,9 +393,11 @@ void ContextMenu::onStartFileTransferTriggered()
         return;
     }
 
-    ContactModelItem *item = m_currentIndex.data(ContactsModel::ItemRole).value<ContactModelItem*>();
-    if (item) {
-        m_mainWidget->startFileTransferChannel(item);
+    Tp::ContactPtr contact = m_currentIndex.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+    Tp::AccountPtr account = m_currentIndex.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
+
+    if (contact && account) {
+        m_mainWidget->startFileTransferChannel(account, contact);
     }
 }
 
@@ -404,9 +408,11 @@ void ContextMenu::onStartDesktopSharingTriggered()
         return;
     }
 
-    ContactModelItem *item = m_currentIndex.data(ContactsModel::ItemRole).value<ContactModelItem*>();
-    if (item) {
-        m_mainWidget->startDesktopSharing(item);
+    Tp::ContactPtr contact = m_currentIndex.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+    Tp::AccountPtr account = m_currentIndex.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
+
+    if (contact && account) {
+        m_mainWidget->startDesktopSharing(account, contact);
     }
 }
 
@@ -417,15 +423,12 @@ void ContextMenu::onOpenLogViewerTriggered()
       return;
     }
 
-    ContactModelItem *item = m_currentIndex.data(ContactsModel::ItemRole).value<ContactModelItem*>();
-    Q_ASSERT(item);
+    Tp::ContactPtr contact = m_currentIndex.data(ContactsModel::ContactRole).value<Tp::ContactPtr>();
+    Tp::AccountPtr account = m_currentIndex.data(ContactsModel::AccountRole).value<Tp::AccountPtr>();
 
-    Tp::ContactPtr contact = item->contact();
-    Tp::AccountPtr account = m_mainWidget->d_ptr->model->accountForContactItem(item);
-
-    /* Use "--" so that KCmdLineArgs does not parse UIDs starting with "-" as arguments */
-    KToolInvocation::kdeinitExec(QLatin1String("ktp-log-viewer"),
-	  QStringList() << QLatin1String("--") << account->uniqueIdentifier() << contact->id());
+    if (contact && account) {
+        m_mainWidget->startLogViewer(account, contact);
+    }
 }
 
 void ContextMenu::onUnblockContactTriggered()
diff --git a/main-widget.cpp b/main-widget.cpp
index 549553a..112f8f0 100644
--- a/main-widget.cpp
+++ b/main-widget.cpp
@@ -37,8 +37,6 @@
 #include <TelepathyQt/PendingReady>
 
 #include <KTp/Models/contacts-model.h>
-#include <KTp/Models/contact-model-item.h>
-#include <KTp/Models/groups-model-item.h>
 #include <KTp/Widgets/add-contact-dialog.h>
 #include <KTp/Widgets/join-chat-room-dialog.h>
 
@@ -367,14 +365,13 @@ void MainWidget::onCustomContextMenuRequested(const QPoint &pos)
         return;
     }
 
-    Tp::ContactPtr contact;
-    QVariant item = index.data(ContactsModel::ItemRole);
+    ContactsModel::RowType type = (ContactsModel::RowType)index.data(ContactsModel::TypeRole).toInt();
 
     KMenu *menu = 0;
 
-    if (item.userType() == qMetaTypeId<ContactModelItem*>()) {
+    if (type == ContactsModel::ContactRowType) {
         menu = m_contextMenu->contactContextMenu(index);
-    } else if (item.userType() == qMetaTypeId<GroupsModelItem*>()) {
+    } else if (type == ContactsModel::GroupRowType) {
         menu = m_contextMenu->groupContextMenu(index);
     }
 

-- 
ktp-contact-list packaging



More information about the pkg-kde-commits mailing list