[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:18:17 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-text-ui.git;a=commitdiff;h=e9b1545
The following commit has been merged in the master branch:
commit e9b15452baf759ec6aeaf7a0977e30fca7352505
Author: David Edmundson <kde at davidedmundson.co.uk>
Date: Sat Oct 2 16:46:39 2010 +0000
update the tabcolor if a contact in the chat is typing a message.
svn path=/trunk/playground/network/telepathy-chat-handler/; revision=1181894
---
app/mainwindow.cpp | 20 ++++++++++++++++++++
app/mainwindow.h | 2 ++
lib/chatwindow.cpp | 34 +++++++++++++++++++++++++++-------
3 files changed, 49 insertions(+), 7 deletions(-)
diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp
index f4ae472..b2ffc4d 100644
--- a/app/mainwindow.cpp
+++ b/app/mainwindow.cpp
@@ -20,6 +20,7 @@
#include "mainwindow.h"
#include "chatwindow.h"
+#include <KColorScheme>
inline ChannelClassList channelClassList()
{
@@ -65,6 +66,7 @@ void MainWindow::handleChannels(const MethodInvocationContextPtr<> &context,
connect(newWindow, SIGNAL(titleChanged(QString)), SLOT(updateTabText(QString)));
connect(newWindow,SIGNAL(iconChanged(KIcon)), SLOT(updateTabIcon(KIcon)));
+ connect(newWindow, SIGNAL(userTypingChanged(bool)), SLOT(onUserTypingChanged(bool)));
resize(newWindow->sizeHint() - QSize(50, 50));// FUDGE
@@ -102,3 +104,21 @@ void MainWindow::onCurrentIndexChanged(int index)
ChatWindow* chat = qobject_cast<ChatWindow*>(widget(index));
setWindowTitle(chat->title());
}
+
+void MainWindow::onUserTypingChanged(bool isTyping)
+{
+ QWidget* sender = qobject_cast<QWidget*>(QObject::sender());
+ if (sender)
+ {
+ KColorScheme scheme(QPalette::Active, KColorScheme::Window);
+ int tabIndex = indexOf(sender);
+ if (isTyping)
+ {
+ this->setTabTextColor(tabIndex, scheme.foreground(KColorScheme::PositiveText).color() );
+ }
+ else
+ {
+ this->setTabTextColor(tabIndex, scheme.foreground(KColorScheme::NormalText).color() );
+ }
+ }
+}
diff --git a/app/mainwindow.h b/app/mainwindow.h
index bedffda..d9fd7c8 100644
--- a/app/mainwindow.h
+++ b/app/mainwindow.h
@@ -63,6 +63,8 @@ private slots:
/** keep the main window title in line with active tab */
void onCurrentIndexChanged(int index);
+ void onUserTypingChanged(bool isTyping);
+
};
#endif // REALCLIENTHANDLER_H
diff --git a/lib/chatwindow.cpp b/lib/chatwindow.cpp
index 0ad1bc1..d21b88b 100644
--- a/lib/chatwindow.cpp
+++ b/lib/chatwindow.cpp
@@ -104,7 +104,7 @@ ChatWindow::ChatWindow(ChatConnection* chat, QWidget *parent) :
connect(m_chatConnection, SIGNAL(channelReadyStateChanged(bool)), SLOT(updateEnabledState(bool)));
connect(m_chatConnection->channel().data(), SIGNAL(messageReceived(Tp::ReceivedMessage)), SLOT(handleIncomingMessage(Tp::ReceivedMessage)));
connect(m_chatConnection->channel().data(), SIGNAL(messageSent(Tp::Message, Tp::MessageSendingFlags, QString)), SLOT(handleMessageSent(Tp::Message, Tp::MessageSendingFlags, QString)));
- connect(m_chatConnection->channel().data(), SIGNAL(chatStateChanged(Tp::ContactPtr, ChannelChatState)), SLOT(updateChatStatus(Tp::ContactPtr, ChannelChatState)));
+ connect(m_chatConnection->channel().data(), SIGNAL(chatStateChanged(Tp::ContactPtr, ChannelChatState)), SLOT(onChatStatusChanged(Tp::ContactPtr, ChannelChatState)));
connect(ui->sendMessageButton, SIGNAL(released()), SLOT(sendMessage()));
connect(ui->chatArea, SIGNAL(loadFinished(bool)), SLOT(chatViewReady()));
@@ -203,7 +203,7 @@ void ChatWindow::sendMessage()
}
}
-void ChatWindow::updateChatStatus(Tp::ContactPtr contact, ChannelChatState state)
+void ChatWindow::onChatStatusChanged(Tp::ContactPtr contact, ChannelChatState state)
{
//don't show our own status changes.
if (contact == m_chatConnection->connection()->selfContact())
@@ -211,6 +211,8 @@ void ChatWindow::updateChatStatus(Tp::ContactPtr contact, ChannelChatState state
return;
}
+ bool contactIsTyping = false;
+
switch (state) {
case ChannelChatStateGone: {
AdiumThemeStatusInfo statusMessage;
@@ -224,15 +226,33 @@ void ChatWindow::updateChatStatus(Tp::ContactPtr contact, ChannelChatState state
case ChannelChatStateInactive:
//FIXME send a 'chat timed out' message to chatview
break;
- case ChannelChatStateActive:
- //This is the normal state.
- ui->statusLabel->setText("");
+ case ChannelChatStateActive:
case ChannelChatStatePaused:
- //not sure what this means..safest to do nothing.
break;
case ChannelChatStateComposing:
- ui->statusLabel->setText(i18n("%1 is typing a message").arg(contact->alias()));
+ contactIsTyping = true;
+ }
+
+
+ if (!contactIsTyping)
+ {
+ //In a multiperson chat just because this user is no longer typing it doesn't mean that no-one is.
+ //loop through each contact, check no-one is in composing mode.
+ foreach (Tp::ContactPtr contact, m_chatConnection->channel()->groupContacts())
+ {
+ if (contact == m_chatConnection->connection()->selfContact())
+ {
+ continue;
+ }
+
+ if (m_chatConnection->channel()->chatState(contact) == ChannelChatStateComposing)
+ {
+ contactIsTyping = true;
+ }
+ }
}
+
+ emit userTypingChanged(contactIsTyping);
}
--
ktp-text-ui packaging
More information about the pkg-kde-commits
mailing list