[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