[SCM] ktp-text-ui packaging branch, master, updated. debian/15.12.1-1-1918-gdf4b0ec

Maximiliano Curia maxy at moszumanska.debian.org
Sat May 28 00:23:52 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-text-ui.git;a=commitdiff;h=17d5393

The following commit has been merged in the master branch:
commit 17d53930fbcb8a3159940af668134babc5b1c65c
Author: David Edmundson <david at davidedmundson.co.uk>
Date:   Sun Apr 14 18:43:58 2013 +0100

    Move AdiumContentInfo to be internal to AdiumThemeView
    
    AdiumThemeView now takes a KTp::Message which contains all the information needed to present information in the view.
    /me messages are passed as KTp::Messages, in future status messages will be too.
    
    I also had to fix entity model to take KTp::ContactPtr because of a conflict in Qt MetaTypes after including KTp code.
    
    REVIEW: 109835
---
 config/appearance-config-tab.cpp |  26 ++++----
 lib/adium-theme-view.cpp         |  45 +++++++++++++-
 lib/adium-theme-view.h           |   9 ++-
 lib/chat-widget.cpp              | 131 ++++++---------------------------------
 lib/chat-widget.h                |   4 +-
 lib/logmanager.cpp               |  44 ++-----------
 lib/logmanager.h                 |   3 +-
 logviewer/entity-model-item.cpp  |   2 +-
 logviewer/entity-model-item.h    |   4 +-
 logviewer/entity-model.cpp       |   4 +-
 logviewer/entity-model.h         |   5 +-
 logviewer/entity-proxy-model.cpp |   2 +-
 logviewer/log-viewer.cpp         |   3 +-
 logviewer/main.cpp               |   4 +-
 logviewer/message-view.cpp       |  39 ++----------
 15 files changed, 107 insertions(+), 218 deletions(-)

diff --git a/config/appearance-config-tab.cpp b/config/appearance-config-tab.cpp
index fadfd47..5ce98cf 100644
--- a/config/appearance-config-tab.cpp
+++ b/config/appearance-config-tab.cpp
@@ -172,7 +172,7 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setSenderScreenName(i18nc("Example name", "Larry Demo"));
     message.setService(i18nc("XMPP Protocol name" , "Jabber"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     message = AdiumThemeContentInfo(AdiumThemeMessageInfo::HistoryRemoteToLocal);
     message.setMessage(i18nc("Example message in preview conversation","Bye Bye"));
@@ -180,7 +180,7 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setSenderScreenName(i18nc("Example name", "Larry Demo"));
     message.setService(i18n("Jabber"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     message = AdiumThemeContentInfo(AdiumThemeMessageInfo::HistoryLocalToRemote);
     message.setMessage(i18nc("Example message in preview conversation","Have fun!"));
@@ -188,7 +188,7 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setSenderScreenName(i18nc("Example name", "Ted Example"));
     message.setService(i18n("Jabber"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     message = AdiumThemeContentInfo(AdiumThemeMessageInfo::HistoryLocalToRemote);
     message.setMessage(i18nc("Example message in preview conversation","cya"));
@@ -196,20 +196,20 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setSenderScreenName(i18nc("Example name", "Ted Example"));
     message.setService(i18n("Jabber"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     AdiumThemeStatusInfo statusMessage(true);
     statusMessage.setMessage(i18nc("Example message", "Ted Example waves."));
     statusMessage.setTime(QDateTime::currentDateTime());
     statusMessage.setService(i18n("Jabber"));
-    ui->chatView->addStatusMessage(statusMessage);
+    ui->chatView->addAdiumStatusMessage(statusMessage);
 
     statusMessage = AdiumThemeStatusInfo(true);
     statusMessage.setMessage(i18nc("Example message in preview conversation","Ted Example has left the chat.")); //FIXME sync this with chat text logic.
     statusMessage.setTime(QDateTime::currentDateTime());
     statusMessage.setService(i18n("Jabber"));
     statusMessage.setStatus(QLatin1String("away"));
-    ui->chatView->addStatusMessage(statusMessage);
+    ui->chatView->addAdiumStatusMessage(statusMessage);
 
     message = AdiumThemeContentInfo(AdiumThemeMessageInfo::RemoteToLocal);
     message.setMessage(i18nc("Example message in preview conversation","Hello Ted"));
@@ -218,7 +218,7 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setService(i18n("Jabber"));
     message.appendMessageClass(QLatin1String("mention"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     message = AdiumThemeContentInfo(AdiumThemeMessageInfo::RemoteToLocal);
     message.setMessage(i18nc("Example message in preview conversation","What's up?"));
@@ -226,7 +226,7 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setSenderScreenName(i18nc("Example name", "Larry Demo"));
     message.setService(i18n("Jabber"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     message = AdiumThemeContentInfo(AdiumThemeMessageInfo::LocalToRemote);
     message.setMessage(i18nc("Example message in preview conversation","Check out which cool adium themes work "
@@ -236,7 +236,7 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setSenderScreenName(i18nc("Example name", "Ted Example"));
     message.setService(i18n("Jabber"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     if ( m_groupChat == true) {
         message = AdiumThemeContentInfo(AdiumThemeMessageInfo::RemoteToLocal);
@@ -245,7 +245,7 @@ void AppearanceConfigTab::sendDemoMessages()
         message.setSenderScreenName(i18nc("Example name", "Bob Example"));
         message.setService(i18n("Jabber"));
         message.setTime(QDateTime::currentDateTime());
-        ui->chatView->addContentMessage(message);
+        ui->chatView->addAdiumContentMessage(message);
     }
 
     message = AdiumThemeContentInfo(AdiumThemeMessageInfo::LocalToRemote);
@@ -254,7 +254,7 @@ void AppearanceConfigTab::sendDemoMessages()
     message.setSenderScreenName(i18nc("Example name", "Ted Example"));
     message.setService(i18n("Jabber"));
     message.setTime(QDateTime::currentDateTime());
-    ui->chatView->addContentMessage(message);
+    ui->chatView->addAdiumContentMessage(message);
 
     if (ui->chatView->showPresenceChanges()) {
         statusMessage = AdiumThemeStatusInfo();
@@ -262,14 +262,14 @@ void AppearanceConfigTab::sendDemoMessages()
         statusMessage.setTime(QDateTime::currentDateTime());
         statusMessage.setService(i18n("Jabber"));
         statusMessage.setStatus(QLatin1String("away"));
-        ui->chatView->addStatusMessage(statusMessage);
+        ui->chatView->addAdiumStatusMessage(statusMessage);
 
         statusMessage = AdiumThemeStatusInfo();
         statusMessage.setMessage(i18nc("Example message in preview conversations","Ted Example has left the chat.")); //FIXME sync this with chat text logic.
         statusMessage.setTime(QDateTime::currentDateTime());
         statusMessage.setService(i18n("Jabber"));
         statusMessage.setStatus(QLatin1String("away"));
-        ui->chatView->addStatusMessage(statusMessage);
+        ui->chatView->addAdiumStatusMessage(statusMessage);
     }
 }
 
diff --git a/lib/adium-theme-view.cpp b/lib/adium-theme-view.cpp
index abbe831..e043ea8 100644
--- a/lib/adium-theme-view.cpp
+++ b/lib/adium-theme-view.cpp
@@ -354,7 +354,46 @@ void AdiumThemeView::clear()
     }
 }
 
-void AdiumThemeView::addContentMessage(const AdiumThemeContentInfo &contentMessage)
+void AdiumThemeView::addMessage(const KTp::Message &message)
+{
+    if (message.type() == Tp::ChannelTextMessageTypeAction) {
+        addStatusMessage(QString::fromLatin1("%1 %2").arg(message.senderAlias(), message.mainMessagePart()));
+    } else {
+        AdiumThemeContentInfo messageInfo;
+        if (message.direction() == KTp::Message::RemoteToLocal) {
+            messageInfo = AdiumThemeContentInfo(AdiumThemeContentInfo::RemoteToLocal);
+        } else {
+            messageInfo = AdiumThemeContentInfo(AdiumThemeContentInfo::LocalToRemote);
+        }
+
+        messageInfo.setMessage(message.finalizedMessage());
+        messageInfo.setScript(message.finalizedScript());
+
+        messageInfo.setTime(message.time());
+
+        if (message.property("highlight").toBool()) {
+            messageInfo.appendMessageClass(QLatin1String("mention"));
+        }
+        messageInfo.setSenderDisplayName(message.senderAlias());
+        messageInfo.setSenderScreenName(message.senderId());
+        if (message.sender()) {
+            messageInfo.setUserIconPath(message.sender()->avatarData().fileName);
+        }
+
+        addAdiumContentMessage(messageInfo);
+    }
+}
+
+void AdiumThemeView::addStatusMessage(const QString &text, const QDateTime &time)
+{
+    AdiumThemeStatusInfo messageInfo;
+    messageInfo.setMessage(text);
+    messageInfo.setTime(time);
+//    messageInfo.setStatus(QLatin1String("error")); //port this?
+    addAdiumStatusMessage(messageInfo);
+}
+
+void AdiumThemeView::addAdiumContentMessage(const AdiumThemeContentInfo &contentMessage)
 {
     QString styleHtml;
     bool consecutiveMessage = false;
@@ -422,7 +461,7 @@ void AdiumThemeView::addContentMessage(const AdiumThemeContentInfo &contentMessa
     appendMessage(styleHtml, message.script(), mode);
 }
 
-void AdiumThemeView::addStatusMessage(const AdiumThemeStatusInfo& statusMessage)
+void AdiumThemeView::addAdiumStatusMessage(const AdiumThemeStatusInfo& statusMessage)
 {
     QString styleHtml;
     bool consecutiveMessage = false;
@@ -713,3 +752,5 @@ const QString AdiumThemeView::variantPath() const
 {
     return m_variantPath;
 }
+
+
diff --git a/lib/adium-theme-view.h b/lib/adium-theme-view.h
index 676b794..8d17f9d 100644
--- a/lib/adium-theme-view.h
+++ b/lib/adium-theme-view.h
@@ -27,6 +27,8 @@
 
 #include <KEmoticons>
 
+#include <KTp/message.h>
+
 #include "ktpchat_export.h"
 
 class AdiumThemeContentInfo;
@@ -92,11 +94,14 @@ public:
     void clear();
 
 public Q_SLOTS:
-    void addContentMessage(const AdiumThemeContentInfo&);
-    void addStatusMessage(const AdiumThemeStatusInfo&);
+    void addMessage(const KTp::Message &message);
+    void addStatusMessage(const QString &text, const QDateTime &time=QDateTime::currentDateTime());
     void onOpenLinkActionTriggered();
     virtual void onLinkClicked(const QUrl &);
 
+    void addAdiumContentMessage(const AdiumThemeContentInfo&);
+    void addAdiumStatusMessage(const AdiumThemeStatusInfo&);
+
 protected:
     virtual void contextMenuEvent(QContextMenuEvent *event);
     virtual void wheelEvent(QWheelEvent *event);
diff --git a/lib/chat-widget.cpp b/lib/chat-widget.cpp
index 02fa106..ecf3db2 100644
--- a/lib/chat-widget.cpp
+++ b/lib/chat-widget.cpp
@@ -104,7 +104,7 @@ ChatWidget::ChatWidget(const Tp::TextChannelPtr & channel, const Tp::AccountPtr
     d->channel = channel;
     d->account = account;
     d->logManager = new LogManager(this);
-    connect(d->logManager, SIGNAL(fetched(QList<AdiumThemeContentInfo>)), SLOT(onHistoryFetched(QList<AdiumThemeContentInfo>)));
+    connect(d->logManager, SIGNAL(fetched(QList<KTp::Message>)), SLOT(onHistoryFetched(QList<KTp::Message>)));
 
     connect(d->account.data(), SIGNAL(currentPresenceChanged(Tp::Presence)),
             this, SLOT(currentPresenceChanged(Tp::Presence)));
@@ -466,15 +466,15 @@ void ChatWidget::setupContactModelSignals()
 }
 
 
-void ChatWidget::onHistoryFetched(const QList<AdiumThemeContentInfo> &messages)
+void ChatWidget::onHistoryFetched(const QList<KTp::Message> &messages)
 {
+    d->chatviewlInitialised = true;
+
     kDebug() << "found" << messages.count() << "messages in history";
-    Q_FOREACH(const AdiumThemeContentInfo &message, messages) {
-        d->ui.chatArea->addContentMessage(message);
+    Q_FOREACH(const KTp::Message &message, messages) {
+        d->ui.chatArea->addMessage(message);
     }
 
-    d->chatviewlInitialised = true;
-
     //process any messages we've 'missed' whilst initialising.
     Q_FOREACH(const Tp::ReceivedMessage &message, d->channel->messageQueue()) {
         handleIncomingMessage(message, true);
@@ -526,7 +526,6 @@ void ChatWidget::handleIncomingMessage(const Tp::ReceivedMessage &message, bool
 
         if (message.isDeliveryReport()) {
             QString text;
-            AdiumThemeStatusInfo messageInfo;
             Tp::ReceivedMessage::DeliveryDetails reportDetails = message.deliveryDetails();
 
             if (reportDetails.hasDebugMessage()) {
@@ -603,61 +602,17 @@ void ChatWidget::handleIncomingMessage(const Tp::ReceivedMessage &message, bool
                 return;
             }
 
-            messageInfo.setMessage(text);
-            messageInfo.setTime(message.received());
-            messageInfo.setStatus(QLatin1String("error"));
-
-            d->ui.chatArea->addStatusMessage(messageInfo);
-        } else if (message.messageType() == Tp::ChannelTextMessageTypeAction) {
-            //a "/me " message
-
-            AdiumThemeStatusInfo statusMessage;
-            statusMessage.setTime(message.received());
-
-            QString senderName;
-            if (message.sender().isNull()) {
-                senderName = message.senderNickname();
-            } else {
-                senderName = message.sender()->alias();
-            }
-
-            statusMessage.setMessage(QString::fromLatin1("%1 %2").arg(senderName, message.text()));
-            d->ui.chatArea->addStatusMessage(statusMessage);
+            d->ui.chatArea->addStatusMessage(text, message.received());
         } else {
             AdiumThemeContentInfo messageInfo(AdiumThemeMessageInfo::RemoteToLocal);
 
             KTp::Message processedMessage(KTp::MessageProcessor::instance()->processIncomingMessage(message, d->account, d->channel));
 
-            // FIXME: eventually find a way to make MessageProcessor allow per
-            //        instance filters.
             if (!alreadyNotified) {
                 d->notifyFilter->filterMessage(processedMessage,
                                                KTp::MessageContext(d->account, d->channel));
             }
-
-            messageInfo.setMessage(processedMessage.finalizedMessage());
-            messageInfo.setScript(processedMessage.finalizedScript());
-
-            QDateTime time = message.sent();
-            if (!time.isValid()) {
-                time = message.received();
-            }
-            messageInfo.setTime(time);
-
-            if (processedMessage.property("highlight").toBool()) {
-                messageInfo.appendMessageClass(QLatin1String("mention"));
-            }
-
-            //sender can have just an ID or be a full contactPtr. Use full contact info if available.
-            if (message.sender().isNull()) {
-                messageInfo.setSenderDisplayName(message.senderNickname());
-            } else {
-                messageInfo.setUserIconPath(message.sender()->avatarData().fileName);
-                messageInfo.setSenderDisplayName(message.sender()->alias());
-                messageInfo.setSenderScreenName(message.sender()->id());
-            }
-
-            d->ui.chatArea->addContentMessage(messageInfo);
+            d->ui.chatArea->addMessage(processedMessage);
         }
 
         //if the window is on top, ack straight away. Otherwise they stay in the message queue for acking when activated..
@@ -670,40 +625,12 @@ void ChatWidget::handleIncomingMessage(const Tp::ReceivedMessage &message, bool
 
 }
 
-void ChatWidget::handleMessageSent(const Tp::Message &message, Tp::MessageSendingFlags, const QString&) /*Not sure what these other args are for*/
+void ChatWidget::handleMessageSent(const Tp::Message &message, Tp::MessageSendingFlags, const QString&)
 {
-    Tp::ContactPtr sender = d->channel->groupSelfContact();
-
-    if (message.messageType() == Tp::ChannelTextMessageTypeAction) {
-        AdiumThemeStatusInfo statusMessage;
-        statusMessage.setTime(message.sent());
-        statusMessage.setMessage(QString::fromLatin1("%1 %2").arg(sender->alias(), message.text()));
-        d->ui.chatArea->addStatusMessage(statusMessage);
-    }
-    else {
-        AdiumThemeContentInfo messageInfo(AdiumThemeMessageInfo::LocalToRemote);
-        KTp::Message processedMessage(KTp::MessageProcessor::instance()->processIncomingMessage(message, d->account, d->channel));
-        messageInfo.setMessage(processedMessage.finalizedMessage());
-        messageInfo.setScript(processedMessage.finalizedScript());
-
-        messageInfo.setTime(message.sent());
-
-        messageInfo.setSenderDisplayName(sender->alias());
-        messageInfo.setSenderScreenName(sender->id());
-        messageInfo.setUserIconPath(sender->avatarData().fileName);
-        d->ui.chatArea->addContentMessage(messageInfo);
-    }
-
-    //send the notification that a message has been sent
-    KNotification *notification = new KNotification(QLatin1String("kde_telepathy_outgoing"), this);
-    notification->setComponentData(d->telepathyComponentData());
-    notification->setTitle(i18n("You have sent a message"));
-    QPixmap notificationPixmap;
-    if (notificationPixmap.load(sender->avatarData().fileName)) {
-        notification->setPixmap(notificationPixmap);
-    }
-    notification->setText(message.text());
-    notification->sendEvent();
+    KTp::Message processedMessage(KTp::MessageProcessor::instance()->processIncomingMessage(message, d->account, d->channel));
+    d->notifyFilter->filterMessage(processedMessage,
+                                   KTp::MessageContext(d->account, d->channel));
+    d->ui.chatArea->addMessage(processedMessage);
 }
 
 void ChatWidget::chatViewReady()
@@ -744,12 +671,7 @@ void ChatWidget::onChatStatusChanged(const Tp::ContactPtr & contact, Tp::Channel
     }
 
     if (state == Tp::ChannelChatStateGone) {
-        AdiumThemeStatusInfo statusMessage;
-        statusMessage.setMessage(i18n("%1 has left the chat", contact->alias()));
-        statusMessage.setService(d->channel->connection()->protocolName());
-        statusMessage.setStatus(QLatin1String("away"));
-        statusMessage.setTime(QDateTime::currentDateTime());
-        d->ui.chatArea->addStatusMessage(statusMessage);
+        d->ui.chatArea->addStatusMessage(i18n("%1 has left the chat", contact->alias()));
     }
 
     if (d->isGroupChat) {
@@ -803,11 +725,7 @@ void ChatWidget::onContactPresenceChange(const Tp::ContactPtr & contact, const K
 
     if (!message.isNull()) {
         if (d->ui.chatArea->showPresenceChanges()) {
-            AdiumThemeStatusInfo statusMessage;
-            statusMessage.setMessage(message);
-            statusMessage.setService(d->channel->connection()->protocolName());
-            statusMessage.setTime(QDateTime::currentDateTime());
-            d->ui.chatArea->addStatusMessage(statusMessage);
+            d->ui.chatArea->addStatusMessage(message);
         }
     }
 
@@ -840,11 +758,7 @@ void ChatWidget::onContactAliasChanged(const Tp::ContactPtr & contact, const QSt
     }
 
     if (!message.isEmpty()) {
-        AdiumThemeStatusInfo statusMessage;
-        statusMessage.setMessage(message);
-        statusMessage.setService(d->channel->connection()->protocolName());
-        statusMessage.setTime(QDateTime::currentDateTime());
-        d->ui.chatArea->addStatusMessage(statusMessage);
+        d->ui.chatArea->addStatusMessage(i18n("%1 has left the chat", contact->alias()));
     }
 
     //if in a non-group chat situation, and the other contact has changed alias...
@@ -862,11 +776,7 @@ void ChatWidget::onContactBlockStatusChanged(const Tp::ContactPtr &contact, bool
         message = i18n("%1 is now unblocked.", contact->alias());
     }
 
-    AdiumThemeStatusInfo statusMessage;
-    statusMessage.setMessage(message);
-    statusMessage.setService(d->channel->connection()->protocolName());
-    statusMessage.setTime(QDateTime::currentDateTime());
-    d->ui.chatArea->addStatusMessage(statusMessage);
+    d->ui.chatArea->addStatusMessage(message);
 
     Q_EMIT contactBlockStatusChanged(blocked);
 }
@@ -1058,12 +968,7 @@ void ChatWidget::onChatPausedTimerExpired()
 void ChatWidget::currentPresenceChanged(const Tp::Presence &presence)
 {
     if (presence == Tp::Presence::offline()) {
-        // show a message informing the user
-        AdiumThemeStatusInfo statusMessage;
-        statusMessage.setMessage(i18n("You are now offline"));
-        statusMessage.setService(d->channel->connection()->protocolName());
-        statusMessage.setTime(QDateTime::currentDateTime());
-        d->ui.chatArea->addStatusMessage(statusMessage);
+        d->ui.chatArea->addStatusMessage(i18n("You are now offline"));
         Q_EMIT iconChanged(KTp::Presence(Tp::Presence::offline()).icon());
     }
 }
diff --git a/lib/chat-widget.h b/lib/chat-widget.h
index 95b86f8..366d88b 100644
--- a/lib/chat-widget.h
+++ b/lib/chat-widget.h
@@ -34,8 +34,8 @@
 #include <TelepathyQt/ReceivedMessage>
 
 #include <KTp/presence.h>
+#include <KTp/message.h>
 
-class AdiumThemeContentInfo;
 class ChatSearchBar;
 class ChatWidgetPrivate;
 class QShowEvent;
@@ -180,7 +180,7 @@ private Q_SLOTS:
     void findTextInChat(const QString &text, QWebPage::FindFlags flags);
     void findNextTextInChat(const QString &text, QWebPage::FindFlags flags);
     void findPreviousTextInChat(const QString &text, QWebPage::FindFlags flags);
-    void onHistoryFetched(const QList<AdiumThemeContentInfo> &messages);
+    void onHistoryFetched(const QList<KTp::Message> &messages);
     void onChatPausedTimerExpired();
     void currentPresenceChanged(const Tp::Presence &presence);
 
diff --git a/lib/logmanager.cpp b/lib/logmanager.cpp
index a570adf..89889f0 100644
--- a/lib/logmanager.cpp
+++ b/lib/logmanager.cpp
@@ -97,7 +97,7 @@ void LogManager::fetchLast()
     }
 
     //in all other cases finish immediately.
-    QList<AdiumThemeContentInfo> messages;
+    QList<KTp::Message> messages;
     Q_EMIT fetched(messages);
 }
 
@@ -120,7 +120,7 @@ void LogManager::onDatesFinished(Tpl::PendingOperation *po)
         Tpl::PendingEvents *events = m_logManager->queryEvents( pd->account(), pd->entity(), Tpl::EventTypeMaskAny, date);
         connect(events, SIGNAL(finished(Tpl::PendingOperation*)), SLOT(onEventsFinished(Tpl::PendingOperation*)));
     } else {
-        QList<AdiumThemeContentInfo> messages;
+        QList<KTp::Message> messages;
         Q_EMIT fetched(messages);
     }
 }
@@ -156,45 +156,9 @@ void LogManager::onEventsFinished(Tpl::PendingOperation *po)
         }
     }
 
-
-    QList<AdiumThemeContentInfo> messages;
+    QList<KTp::Message> messages;
     Q_FOREACH(const Tpl::TextEventPtr &event, events) {
-        AdiumThemeMessageInfo::MessageType type;
-        Tp::ContactPtr contact;
-        if (event->sender()->identifier() == m_account->normalizedName()) {
-            type = AdiumThemeMessageInfo::HistoryLocalToRemote;
-            if (m_account->connection()) {
-                contact = m_account->connection()->selfContact();
-            }
-        } else {
-            type = AdiumThemeMessageInfo::HistoryRemoteToLocal;
-            contact = m_textChannel->targetContact();
-        }
-
-        /* When connection is dropped (account goes offline), we get an invalid
-         * contact, so we can't correctly create the message. There's no point
-         * emitting fetched() with only partial list of messages, so let's
-         * just terminate here. */
-        if (!contact) {
-            return;
-        }
-
-        AdiumThemeContentInfo message(type);
-
-        KTp::Message processedEvent = KTp::MessageProcessor::instance()->processIncomingMessage(event, m_account, m_textChannel);
-
-        message.setMessage(processedEvent.finalizedMessage());
-        message.setScript(processedEvent.finalizedScript());
-        message.setService(m_account->serviceName());
-        message.setSenderDisplayName(event->sender()->alias());
-        message.setSenderScreenName(event->sender()->alias());
-        message.setTime(event->timestamp());
-        message.setUserIconPath(contact->avatarData().fileName);
-        kDebug()    << event->timestamp()
-                    << "from" << event->sender()->identifier()
-                    << "to" << event->receiver()->identifier()
-                    << event->message();
-
+        KTp::Message message = KTp::MessageProcessor::instance()->processIncomingMessage(event, m_account, m_textChannel);
         messages.append(message);
     }
 
diff --git a/lib/logmanager.h b/lib/logmanager.h
index 9b1d010..e5e97bc 100644
--- a/lib/logmanager.h
+++ b/lib/logmanager.h
@@ -29,6 +29,7 @@
 #include <TelepathyQt/Account>
 #include <TelepathyQt/Contact>
 
+#include <KTp/message.h>
 
 namespace Tpl {
     class PendingOperation;
@@ -50,7 +51,7 @@ public:
     void fetchLast();
 
 Q_SIGNALS:
-    void fetched(const QList<AdiumThemeContentInfo> &messages);
+    void fetched(const QList<KTp::Message> &messages);
 
 private Q_SLOTS:
     void onDatesFinished(Tpl::PendingOperation *po);
diff --git a/logviewer/entity-model-item.cpp b/logviewer/entity-model-item.cpp
index a08ccc2..b5ace64 100644
--- a/logviewer/entity-model-item.cpp
+++ b/logviewer/entity-model-item.cpp
@@ -116,7 +116,7 @@ void EntityModelItem::setData(const QVariant &data, int role)
             m_account = data.value< Tp::AccountPtr >();
             break;
         case EntityModel::ContactRole:
-            m_contact = data.value< Tp::ContactPtr >();
+            m_contact = data.value< KTp::ContactPtr >();
             break;
         case EntityModel::EntityRole:
             m_entity = data.value< Tpl::EntityPtr >();
diff --git a/logviewer/entity-model-item.h b/logviewer/entity-model-item.h
index 47d98cd..8713956 100644
--- a/logviewer/entity-model-item.h
+++ b/logviewer/entity-model-item.h
@@ -27,6 +27,8 @@
 #include <TelepathyQt/Types>
 #include <TelepathyLoggerQt4/Entity>
 
+#include <KTp/contact.h>
+
 class EntityModelItem
 {
 
@@ -53,7 +55,7 @@ private:
 
     Tp::AccountPtr m_account;
     Tpl::EntityPtr m_entity;
-    Tp::ContactPtr m_contact;
+    KTp::ContactPtr m_contact;
 };
 
 #endif // ENTITY_MODEL_ITEM_H
diff --git a/logviewer/entity-model.cpp b/logviewer/entity-model.cpp
index 1c10c1d..4f0dc49 100644
--- a/logviewer/entity-model.cpp
+++ b/logviewer/entity-model.cpp
@@ -32,6 +32,8 @@
 #include <TelepathyQt/PendingOperation>
 #include <TelepathyQt/PendingContacts>
 
+#include <KTp/contact.h>
+
 #include <QPixmap>
 
 EntityModel::EntityModel(QObject *parent) :
@@ -204,7 +206,7 @@ void EntityModel::onEntityContactRetrieved(Tp::PendingOperation *operation)
             item = parent->item(itemRow);
 
             if (item->data(EntityModel::IdRole).toString() == contact->id()) {
-                item->setData(QVariant::fromValue(contact), EntityModel::ContactRole);
+                item->setData(QVariant::fromValue(KTp::ContactPtr::qObjectCast(contact)), EntityModel::ContactRole);
                 break;
             }
 
diff --git a/logviewer/entity-model.h b/logviewer/entity-model.h
index 5c9aa73..37cdeae 100644
--- a/logviewer/entity-model.h
+++ b/logviewer/entity-model.h
@@ -27,7 +27,7 @@
 
 #include <TelepathyLoggerQt4/Entity>
 #include <TelepathyQt/Account>
-
+#include <KTp/types.h>
 
 /**
     Lists all avilable entities.
@@ -83,8 +83,5 @@ private:
 };
 
 Q_DECLARE_METATYPE(Tpl::EntityPtr);
-Q_DECLARE_METATYPE(Tp::AccountPtr);
-Q_DECLARE_METATYPE(Tp::ContactPtr);
-
 
 #endif // ENTITYMODEL_H
diff --git a/logviewer/entity-proxy-model.cpp b/logviewer/entity-proxy-model.cpp
index 67811f6..e8c440e 100644
--- a/logviewer/entity-proxy-model.cpp
+++ b/logviewer/entity-proxy-model.cpp
@@ -70,7 +70,7 @@ bool EntityProxyModel::filterAcceptsRow(int source_row, const QModelIndex &sourc
         return matches_filter;
     }
 
-    Tp::ContactPtr contact = index.data(EntityModel::ContactRole).value< Tp::ContactPtr >();
+    KTp::ContactPtr contact = index.data(EntityModel::ContactRole).value< KTp::ContactPtr >();
 
     /* Check if contact's account name matches */
     if (entity->alias().contains(term, Qt::CaseInsensitive) && matches_filter) {
diff --git a/logviewer/log-viewer.cpp b/logviewer/log-viewer.cpp
index 5c2e214..743cda4 100644
--- a/logviewer/log-viewer.cpp
+++ b/logviewer/log-viewer.cpp
@@ -31,6 +31,7 @@
 #include <TelepathyLoggerQt4/PendingSearch>
 
 #include <KTp/logs-importer.h>
+#include <KTp/contact.h>
 
 #include <QSortFilterProxyModel>
 #include <QWebFrame>
@@ -198,7 +199,7 @@ void LogViewer::slotUpdateMainWindow()
     nearestDates.second = m_nextConversationDate;
 
     Tpl::EntityPtr entity = currentIndex.data(EntityModel::EntityRole).value<Tpl::EntityPtr>();
-    Tp::ContactPtr contact = currentIndex.data(EntityModel::ContactRole).value<Tp::ContactPtr>();
+    KTp::ContactPtr contact = currentIndex.data(EntityModel::ContactRole).value<KTp::ContactPtr>();
     Tp::AccountPtr account = currentIndex.data(EntityModel::AccountRole).value<Tp::AccountPtr>();
     ui->messageView->loadLog(account, entity, contact, date, nearestDates);
 }
diff --git a/logviewer/main.cpp b/logviewer/main.cpp
index 48d5ee2..be894c5 100644
--- a/logviewer/main.cpp
+++ b/logviewer/main.cpp
@@ -27,6 +27,8 @@
 #include <TelepathyQt/AccountManager>
 #include <TelepathyLoggerQt4/Init>
 
+#include <KTp/contact-factory.h>
+
 int main(int argc, char *argv[])
 {
     KAboutData aboutData("ktp-log-viewer",
@@ -65,7 +67,7 @@ int main(int argc, char *argv[])
                                                     << Tp::Connection::FeatureSelfContact
                                                     << Tp::Connection::FeatureRoster);
 
-    Tp::ContactFactoryPtr contactFactory = Tp::ContactFactory::create(
+    Tp::ContactFactoryPtr contactFactory = KTp::ContactFactory::create(
                                                 Tp::Features()  << Tp::Contact::FeatureAlias
                                                     << Tp::Contact::FeatureAvatarData
                                                     << Tp::Contact::FeatureSimplePresence
diff --git a/logviewer/message-view.cpp b/logviewer/message-view.cpp
index 6a59caa..a50fe19 100644
--- a/logviewer/message-view.cpp
+++ b/logviewer/message-view.cpp
@@ -111,43 +111,13 @@ void MessageView::processStoredEvents()
         message.setService(m_account->serviceName());
         message.setTime(QDateTime(m_prev));
 
-        addStatusMessage(message);
+        addAdiumStatusMessage(message);
     }
 
     while (!m_events.isEmpty()) {
-
         const Tpl::TextEventPtr textEvent(m_events.takeFirst().staticCast<Tpl::TextEvent>());
-
-        AdiumThemeMessageInfo::MessageType type;
-        QString iconPath;
-
-        if(textEvent->sender()->identifier() == m_account->normalizedName()) {
-            type = AdiumThemeMessageInfo::HistoryLocalToRemote;
-            iconPath = m_accountAvatar;
-        } else {
-            type = AdiumThemeMessageInfo::HistoryRemoteToLocal;
-            /* FIXME Add support for avatars in MUCs */
-            if (m_entity->entityType() == Tpl::EntityTypeContact) {
-                if (m_contact) {
-                    iconPath = m_contact->avatarData().fileName;
-                }
-            }
-        }
-
-        AdiumThemeContentInfo message(type);
-        message.setMessage(KTp::MessageProcessor::instance()->processIncomingMessage(textEvent, m_account, Tp::TextChannelPtr()).finalizedMessage());
-        message.setService(m_account->serviceName());
-        message.setSenderDisplayName(textEvent->sender()->alias());
-        message.setSenderScreenName(textEvent->sender()->identifier());
-        message.setTime(textEvent->timestamp());
-        message.setUserIconPath(iconPath);
-
-        kDebug()    << textEvent->timestamp()
-                    << "from" << textEvent->sender()->identifier()
-                    << "to" << textEvent->receiver()->identifier()
-                    << textEvent->message();
-
-        addContentMessage(message);
+        KTp::Message message = KTp::MessageProcessor::instance()->processIncomingMessage(textEvent, m_account, Tp::TextChannelPtr());
+        addMessage(message);
     }
 
     if (m_next.isValid()) {
@@ -155,8 +125,7 @@ void MessageView::processStoredEvents()
         message.setMessage(QString(QLatin1String("<a href=\"#x-nextConversation\">%1 >>></a>")).arg(i18n("Next conversation")));
         message.setService(m_account->serviceName());
         message.setTime(QDateTime(m_next));
-
-        addStatusMessage(message);
+        addAdiumStatusMessage(message);
     }
 
     /* Can't highlight the text directly, we need to wait for the JavaScript in

-- 
ktp-text-ui packaging



More information about the pkg-kde-commits mailing list