[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