[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:22:34 UTC 2016


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

The following commit has been merged in the master branch:
commit 5a5f22a21b03643fb234c4fdd100e5c873996d96
Author: Dan Vrátil <dvratil at redhat.com>
Date:   Sat Sep 1 15:51:28 2012 +0200

    Display avatars in logs and more information in log header
    
    REVIEW: 106228
---
 logviewer/log-viewer.cpp   |  3 +-
 logviewer/message-view.cpp | 74 +++++++++++++++++++++++++++++++++++-----------
 logviewer/message-view.h   | 12 +++++++-
 3 files changed, 69 insertions(+), 20 deletions(-)

diff --git a/logviewer/log-viewer.cpp b/logviewer/log-viewer.cpp
index 83d329c..ae425ea 100644
--- a/logviewer/log-viewer.cpp
+++ b/logviewer/log-viewer.cpp
@@ -142,8 +142,9 @@ void LogViewer::updateMainView()
     nearestDates.second = ui->datePicker->nextDate();
 
     Tpl::EntityPtr entity = currentIndex.data(EntityModel::EntityRole).value<Tpl::EntityPtr>();
+    Tp::ContactPtr contact = currentIndex.data(EntityModel::ContactRole).value<Tp::ContactPtr>();
     Tp::AccountPtr account = currentIndex.data(EntityModel::AccountRole).value<Tp::AccountPtr>();
-    ui->messageView->loadLog(account, entity, date, nearestDates);
+    ui->messageView->loadLog(account, entity, contact, date, nearestDates);
 }
 
 void LogViewer::switchConversation(const QDate &date)
diff --git a/logviewer/message-view.cpp b/logviewer/message-view.cpp
index b94f58f..9931b6a 100644
--- a/logviewer/message-view.cpp
+++ b/logviewer/message-view.cpp
@@ -28,7 +28,6 @@
 #include <TelepathyLoggerQt4/LogManager>
 #include <TelepathyLoggerQt4/PendingEvents>
 #include <TelepathyLoggerQt4/TextEvent>
-
 #include <TelepathyQt/Account>
 
 MessageView::MessageView(QWidget *parent) :
@@ -39,13 +38,17 @@ MessageView::MessageView(QWidget *parent) :
 
 
 void MessageView::loadLog(const Tp::AccountPtr &account, const Tpl::EntityPtr &entity,
-                          const QDate &date, const QPair< QDate, QDate > &nearestDates)
+                          const Tp::ContactPtr &contact, const QDate &date,
+                          const QPair< QDate, QDate > &nearestDates)
 {
     m_account = account;
     m_entity = entity;
+    m_contact = contact;
     m_date = date;
     m_prev = nearestDates.first;
     m_next = nearestDates.second;
+    m_initialized = false;
+    m_templateLoaded = false;
 
     if (entity->entityType() == Tpl::EntityTypeRoom) {
         load(AdiumThemeView::GroupChat);
@@ -53,12 +56,16 @@ void MessageView::loadLog(const Tp::AccountPtr &account, const Tpl::EntityPtr &e
         load(AdiumThemeView::SingleUserChat);
     }
 
+    Tp::Avatar avatar = m_account->avatar();
+    if (!avatar.avatarData.isEmpty()) {
+        m_accountAvatar = QString(QLatin1String("data:%1;base64,%2")).
+                            arg(avatar.MIMEType.isEmpty() ? QLatin1String("image/*") : avatar.MIMEType).
+                            arg(QString::fromLatin1(m_account->avatar().avatarData.toBase64().data()));
+    }
 
-    AdiumThemeHeaderInfo headerInfo;
-    headerInfo.setDestinationDisplayName(m_entity->alias());
-    headerInfo.setChatName(m_entity->alias());
-    //  TODO set up other headerInfo here.
-    initialise(headerInfo);
+    Tpl::LogManagerPtr logManager = Tpl::LogManager::instance();
+    Tpl::PendingEvents *pendingEvents  = logManager->queryEvents(m_account, m_entity, Tpl::EventTypeMaskText, m_date);
+    connect(pendingEvents, SIGNAL(finished(Tpl::PendingOperation*)), SLOT(onEventsLoaded(Tpl::PendingOperation*)));
 }
 
 void MessageView::setHighlightText(const QString &text)
@@ -73,18 +80,44 @@ void MessageView::clearHighlightText()
 
 void MessageView::onLoadFinished()
 {
-    //load stuff here.
-    Tpl::LogManagerPtr logManager = Tpl::LogManager::instance();
-    Tpl::PendingEvents *pendingEvents  = logManager->queryEvents(m_account, m_entity, Tpl::EventTypeMaskText, m_date);
-    connect(pendingEvents, SIGNAL(finished(Tpl::PendingOperation*)), SLOT(onEventsLoaded(Tpl::PendingOperation*)));
+    processStoredEvents();
+
+    m_templateLoaded = true;
 }
 
 void MessageView::onEventsLoaded(Tpl::PendingOperation *po)
 {
     Tpl::PendingEvents *pe = qobject_cast<Tpl::PendingEvents*>(po);
 
-    QList<AdiumThemeContentInfo> messages;
+    /* Wait with initialization for the first event so that we can know when the chat session started */
+    if (!m_initialized) {
+        AdiumThemeHeaderInfo headerInfo;
+        headerInfo.setDestinationDisplayName(m_contact.isNull() ? m_entity->alias() : m_contact->alias());
+        headerInfo.setChatName(m_contact.isNull() ? m_entity->alias() : m_contact->alias());
+        headerInfo.setGroupChat(m_entity->entityType() == Tpl::EntityTypeRoom);
+        headerInfo.setSourceName(m_account->displayName());
+        headerInfo.setIncomingIconPath(m_contact->avatarData().fileName);
+
+        if (pe->events().count() > 0 && !pe->events().first().isNull()) {
+            headerInfo.setTimeOpened(pe->events().first()->timestamp());
+        }
+
+        initialise(headerInfo);
+
+        m_initialized = true;
+    }
+
+    m_events << pe->events();
+
+    /* Don't add retrieved messages until template is loaded */
+    if (m_templateLoaded) {
+        processStoredEvents();
+    }
+}
+
 
+void MessageView::processStoredEvents()
+{
     if (m_prev.isValid()) {
         AdiumThemeStatusInfo message(AdiumThemeMessageInfo::HistoryStatus);
         message.setMessage(QString(QLatin1String("<a href=\"#x-prevConversation\"><<< %1</a>")).arg(i18n("Previous conversation")));
@@ -94,19 +127,24 @@ void MessageView::onEventsLoaded(Tpl::PendingOperation *po)
         addStatusMessage(message);
     }
 
-    Q_FOREACH(const Tpl::EventPtr &event, pe->events()) {
-        const Tpl::TextEventPtr textEvent(event.staticCast<Tpl::TextEvent>());
+    while (!m_events.isEmpty()) {
+
+        const Tpl::TextEventPtr textEvent(m_events.takeFirst().staticCast<Tpl::TextEvent>());
 
         AdiumThemeMessageInfo::MessageType type;
         QString iconPath;
 
-        if(event->sender()->identifier() == m_account->normalizedName()) {
+        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) {
+                iconPath = m_contact->avatarData().fileName;
+            }
         }
 
-
         AdiumThemeContentInfo message(type);
         message.setMessage(MessageProcessor::instance()->processIncomingMessage(textEvent).finalizedMessage());
         message.setService(m_account->serviceName());
@@ -114,13 +152,12 @@ void MessageView::onEventsLoaded(Tpl::PendingOperation *po)
         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();
 
-        messages.append(message);
-
         addContentMessage(message);
     }
 
@@ -153,6 +190,7 @@ void MessageView::onLinkClicked(const QUrl &link)
     AdiumThemeView::onLinkClicked(link);
 }
 
+
 void MessageView::doHighlightText()
 {
     findText(QString());
diff --git a/logviewer/message-view.h b/logviewer/message-view.h
index 40c281b..0c90ded 100644
--- a/logviewer/message-view.h
+++ b/logviewer/message-view.h
@@ -24,6 +24,7 @@
 
 #include <QDate>
 
+#include <TelepathyLoggerQt4/Event>
 #include <TelepathyLoggerQt4/Entity>
 #include <TelepathyLoggerQt4/PendingOperation>
 
@@ -35,7 +36,8 @@ public:
     explicit MessageView(QWidget *parent = 0);
 
     void loadLog(const Tp::AccountPtr &account, const Tpl::EntityPtr &entity,
-                 const QDate &date, const QPair< QDate, QDate > &nearestDates);
+                 const Tp::ContactPtr &contact, const QDate &date,
+                 const QPair< QDate, QDate > &nearestDates);
 
     void setHighlightText(const QString &text);
     void clearHighlightText();
@@ -52,14 +54,22 @@ Q_SIGNALS:
     void conversationSwitchRequested(const QDate &date);
 
 private:
+    void processStoredEvents();
+
     Tpl::EntityPtr m_entity;
     Tp::AccountPtr m_account;
+    Tp::ContactPtr m_contact;
     QDate m_date;
     QDate m_prev;
     QDate m_next;
 
     QString m_highlightedText;
 
+    Tpl::EventPtrList m_events;
+    bool m_initialized;
+    bool m_templateLoaded;
+
+    QString m_accountAvatar;
 };
 
 #endif // MESSAGEVIEW_H

-- 
ktp-text-ui packaging



More information about the pkg-kde-commits mailing list