[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:21:42 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-text-ui.git;a=commitdiff;h=70dca13
The following commit has been merged in the master branch:
commit 70dca13386b104d877413f7f710119a0fd58aa20
Author: Ahmed Ibrahim <ahmedibrahimkhali at gmail.com>
Date: Sat Mar 31 15:52:14 2012 +0200
Block/Unblock feature in ktp-text-ui module
REVIEW: 104407
FEATURE: 292402
---
app/chat-window.cpp | 52 +++++++++++++++++++++++++++++++++++++++++++
app/chat-window.h | 3 +++
app/chatwindow.rc | 1 +
app/main.cpp | 1 +
lib/channel-contact-model.cpp | 12 ++++++++++
lib/channel-contact-model.h | 3 ++-
lib/chat-widget.cpp | 20 +++++++++++++++++
lib/chat-widget.h | 5 +++++
8 files changed, 96 insertions(+), 1 deletion(-)
diff --git a/app/chat-window.cpp b/app/chat-window.cpp
index bd4fc35..ee62869 100644
--- a/app/chat-window.cpp
+++ b/app/chat-window.cpp
@@ -257,6 +257,18 @@ void ChatWindow::onAudioCallTriggered()
startAudioCall(currChat->account(), currChat->textChannel()->targetContact());
}
+void ChatWindow::onBlockContactTriggered()
+{
+ ChatWidget *currChat = qobject_cast<ChatWidget*>(m_tabWidget->currentWidget());
+
+ if (!currChat) {
+ return;
+ }
+
+ Tp::ContactPtr contact = currChat->textChannel()->targetContact();
+ contact->block();
+}
+
void ChatWindow::onCurrentIndexChanged(int index)
{
kDebug() << index;
@@ -298,6 +310,8 @@ void ChatWindow::onCurrentIndexChanged(int index)
/// TODO re-activate check when invitation to chat has been sorted out
setInviteToChatEnabled(false);
+ toggleBlockButton(currentChatTab->textChannel()->targetContact()->isBlocked());
+
} else {
setAudioCallEnabled(false);
setFileTransferEnabled(false);
@@ -438,6 +452,18 @@ void ChatWindow::onVideoCallTriggered()
startVideoCall(currChat->account(), currChat->textChannel()->targetContact());
}
+void ChatWindow::onUnblockContactTriggered()
+{
+ ChatWidget *currChat = qobject_cast<ChatWidget*>(m_tabWidget->currentWidget());
+
+ if(!currChat) {
+ return;
+ }
+
+ Tp::ContactPtr contact = currChat->textChannel()->targetContact();
+ contact->unblock();
+}
+
void ChatWindow::onShareDesktopTriggered()
{
ChatWidget *currChat = qobject_cast<ChatWidget*>(m_tabWidget->currentWidget());
@@ -477,6 +503,7 @@ void ChatWindow::removeChatTabSignals(ChatTab* chatTab)
disconnect(chatTab, SIGNAL(unreadMessagesChanged()), this, SLOT(onTabStateChanged()));
disconnect(chatTab, SIGNAL(contactPresenceChanged(Tp::Presence)), this, SLOT(onTabStateChanged()));
disconnect(chatTab->chatSearchBar(), SIGNAL(enableSearchButtonsSignal(bool)), this, SLOT(onEnableSearchActions(bool)));
+ disconnect(chatTab, SIGNAL(contactBlockStatusChanged(bool)), this, SLOT(toggleBlockButton(bool)));
}
void ChatWindow::sendNotificationToUser(ChatWindow::NotificationType type, const QString& errorMsg)
@@ -503,6 +530,7 @@ void ChatWindow::setupChatTabSignals(ChatTab *chatTab)
connect(chatTab, SIGNAL(unreadMessagesChanged()), this, SLOT(onTabStateChanged()));
connect(chatTab, SIGNAL(contactPresenceChanged(KTp::Presence)), this, SLOT(onTabStateChanged()));
connect(chatTab->chatSearchBar(), SIGNAL(enableSearchButtonsSignal(bool)), this, SLOT(onEnableSearchActions(bool)));
+ connect(chatTab, SIGNAL(contactBlockStatusChanged(bool)), this, SLOT(toggleBlockButton(bool)));
}
void ChatWindow::setupCustomActions()
@@ -518,6 +546,9 @@ void ChatWindow::setupCustomActions()
KAction *audioCallAction = new KAction(KIcon(QLatin1String("audio-headset")), i18n("&Audio Call"), this);
connect(audioCallAction, SIGNAL(triggered()), this, SLOT(onAudioCallTriggered()));
+ KAction *blockContactAction = new KAction(KIcon(QLatin1String("im-ban-kick-user")), i18n("&Block Contact"), this);
+ connect(blockContactAction, SIGNAL(triggered()), this, SLOT(onBlockContactTriggered()));
+
KAction *fileTransferAction = new KAction(KIcon(QLatin1String("mail-attachment")), i18n("&Send File"), this);
connect(fileTransferAction, SIGNAL(triggered()), this, SLOT(onFileTransferTriggered()));
@@ -554,6 +585,7 @@ void ChatWindow::setupCustomActions()
actionCollection()->addAction(QLatin1String("share-desktop"), shareDesktopAction);
actionCollection()->addAction(QLatin1String("language"), spellDictComboAction);
actionCollection()->addAction(QLatin1String("account-icon"), accountIconAction);
+ actionCollection()->addAction(QLatin1String("block-contact"), blockContactAction);
}
void ChatWindow::setAudioCallEnabled(bool enable)
@@ -706,5 +738,25 @@ void ChatWindow::setTabSpellDictionary(const QString &dict)
currentChatTab->setSpellDictionary(dict);
}
+void ChatWindow::toggleBlockButton(bool contactIsBlocked)
+{
+ QAction *action = actionCollection()->action(QLatin1String("block-contact"));
+ if(contactIsBlocked) {
+ //Change the name of the action to "Unblock Contact"
+ //and disconnect it with the block slot and reconnect it with unblock slot
+ disconnect(action, SIGNAL(triggered()), this, SLOT(onBlockContactTriggered()));
+ action->setText(i18n("&Unblock Contact"));
+
+ connect(action, SIGNAL(triggered()), this, SLOT(onUnblockContactTriggered()));
+ } else {
+ //Change the name of the action to "Block Contact"
+ //and disconnect it with the unblock slot and reconnect it with block slot
+ disconnect(action, SIGNAL(triggered()), this, SLOT(onUnblockContactTriggered()));
+ action->setText(i18n("&Block Contact"));
+
+ connect(action, SIGNAL(triggered()), this, SLOT(onBlockContactTriggered()));
+ }
+}
+
#include "chat-window.moc"
diff --git a/app/chat-window.h b/app/chat-window.h
index fd81141..fc5b26f 100644
--- a/app/chat-window.h
+++ b/app/chat-window.h
@@ -79,6 +79,7 @@ private Q_SLOTS:
void tabBarContextMenu(int index, const QPoint & globalPos);
void closeCurrentTab();
void onAudioCallTriggered(); /** start an audio call */
+ void onBlockContactTriggered(); /** Blocks contact */
void onCurrentIndexChanged(int index);
void onEnableSearchActions(bool enable); /** enables/disables menu search actions */
void onFileTransferTriggered(); /** start a file transfer (to be used only for 1on1 chats!) */
@@ -94,8 +95,10 @@ private Q_SLOTS:
void onTabIconChanged(const KIcon &newIcon);
void onVideoCallTriggered(); /** start a video call */
void onUserTypingChanged(Tp::ChannelChatState state);
+ void onUnblockContactTriggered(); /** Unblocks contact when already blocked */
void onShareDesktopTriggered(); /** start a desktop share */
void setTabSpellDictionary(const QString &dict); /** set the spelling language for the current chat tab*/
+ void toggleBlockButton(bool contactIsBlocked); /** Toggle block/unblock action according to the flag */
protected Q_SLOTS:
void showSettingsDialog();
diff --git a/app/chatwindow.rc b/app/chatwindow.rc
index ac5a259..54cf882 100644
--- a/app/chatwindow.rc
+++ b/app/chatwindow.rc
@@ -25,6 +25,7 @@
<text>Main Toolbar</text>
<Action name="invite-to-chat"/>
<Separator />
+ <Action name="block-contact"/>
<Action name="audio-call"/>
<Action name="video-call"/>
<Action name="send-file"/>
diff --git a/app/main.cpp b/app/main.cpp
index d76ce04..1e26612 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -53,6 +53,7 @@ int main(int argc, char *argv[])
QDBusConnection::sessionBus(),
Tp::Features() << Tp::Connection::FeatureSelfContact
<< Tp::Connection::FeatureCore
+ << Tp::Connection::FeatureRoster
);
Tp::ChannelFactoryPtr channelFactory = Tp::ChannelFactory::create(QDBusConnection::sessionBus());
diff --git a/lib/channel-contact-model.cpp b/lib/channel-contact-model.cpp
index d731322..619e9ad 100644
--- a/lib/channel-contact-model.cpp
+++ b/lib/channel-contact-model.cpp
@@ -112,6 +112,16 @@ void ChannelContactModel::onContactAliasChanged(const QString &alias)
Q_EMIT contactAliasChanged(contact, alias);
}
+void ChannelContactModel::onContactBlockStatusChanged(bool blocked)
+{
+ Tp::ContactPtr contact(qobject_cast<Tp::Contact*>(sender()));
+
+ QModelIndex index = createIndex(m_contacts.lastIndexOf(contact), 0);
+ Q_EMIT dataChanged(index, index);
+
+ Q_EMIT contactBlockStatusChanged(contact, blocked);
+}
+
void ChannelContactModel::addContacts(const Tp::Contacts &contacts)
{
QList<Tp::ContactPtr> newContacts = contacts.toList();
@@ -119,6 +129,7 @@ void ChannelContactModel::addContacts(const Tp::Contacts &contacts)
Q_FOREACH(Tp::ContactPtr contact, newContacts) {
connect(contact.data(), SIGNAL(aliasChanged(QString)), SLOT(onContactAliasChanged(QString)));
connect(contact.data(), SIGNAL(presenceChanged(Tp::Presence)), SLOT(onContactPresenceChanged(Tp::Presence)));
+ connect(contact.data(), SIGNAL(blockStatusChanged(bool)), SLOT(onContactBlockStatusChanged(bool)));
}
beginInsertRows(QModelIndex(), m_contacts.size(), m_contacts.size() + newContacts.size());
@@ -135,6 +146,7 @@ void ChannelContactModel::removeContacts(const Tp::Contacts &contacts)
//if we don't disconnect could we still get notifications here about their status/presence changes even if a contact has left the room
disconnect(contact.data(), SIGNAL(aliasChanged(QString)), this, SLOT(onContactAliasChanged(QString)));
disconnect(contact.data(), SIGNAL(presenceChanged(Tp::Presence)), this, SLOT(onContactPresenceChanged(Tp::Presence)));
+ disconnect(contact.data(), SIGNAL(blockStatusChanged(bool)), this, SLOT(onContactBlockStatusChanged(bool)));
beginRemoveRows(QModelIndex(), m_contacts.indexOf(contact), m_contacts.indexOf(contact));
m_contacts.removeAll(contact);
diff --git a/lib/channel-contact-model.h b/lib/channel-contact-model.h
index 41d5d84..55840ea 100644
--- a/lib/channel-contact-model.h
+++ b/lib/channel-contact-model.h
@@ -47,6 +47,7 @@ public:
Q_SIGNALS:
void contactPresenceChanged(const Tp::ContactPtr &contact, const KTp::Presence &presence);
void contactAliasChanged(const Tp::ContactPtr &contact, const QString &alias);
+ void contactBlockStatusChanged(const Tp::ContactPtr &contact, bool blocked);
protected:
int rowCount(const QModelIndex &parent) const;
@@ -60,7 +61,7 @@ private Q_SLOTS:
const Tp::Channel::GroupMemberChangeDetails &details);
void onContactPresenceChanged(const Tp::Presence &presence);
void onContactAliasChanged(const QString &alias);
-
+ void onContactBlockStatusChanged(bool blocked);
private:
void addContacts(const Tp::Contacts &contacts);
diff --git a/lib/chat-widget.cpp b/lib/chat-widget.cpp
index 0a0b5db..cfbb74b 100644
--- a/lib/chat-widget.cpp
+++ b/lib/chat-widget.cpp
@@ -405,6 +405,8 @@ void ChatWidget::setupContactModelSignals()
SLOT(onContactPresenceChange(Tp::ContactPtr,KTp::Presence)));
connect(d->contactModel, SIGNAL(contactAliasChanged(Tp::ContactPtr,QString)),
SLOT(onContactAliasChanged(Tp::ContactPtr,QString)));
+ connect(d->contactModel, SIGNAL(contactBlockStatusChanged(Tp::ContactPtr,bool)),
+ SLOT(onContactBlockStatusChanged(Tp::ContactPtr,bool)));
}
@@ -814,6 +816,24 @@ void ChatWidget::onContactAliasChanged(const Tp::ContactPtr & contact, const QSt
}
}
+void ChatWidget::onContactBlockStatusChanged(const Tp::ContactPtr &contact, bool blocked)
+{
+ QString message;
+ if(blocked) {
+ message = i18n("%1 is now blocked.", contact->alias());
+ } else {
+ 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);
+
+ Q_EMIT contactBlockStatusChanged(blocked);
+}
+
void ChatWidget::onChannelInvalidated()
{
setChatEnabled(false);
diff --git a/lib/chat-widget.h b/lib/chat-widget.h
index 10de317..533882b 100644
--- a/lib/chat-widget.h
+++ b/lib/chat-widget.h
@@ -119,6 +119,8 @@ protected Q_SLOTS:
void onChatStatusChanged(const Tp::ContactPtr &contact, Tp::ChannelChatState state);
+ void onContactBlockStatusChanged(const Tp::ContactPtr &contact, bool blocked);
+
void onContactPresenceChange(const Tp::ContactPtr &contact, const KTp::Presence &presence);
void onContactAliasChanged(const Tp::ContactPtr &contact, const QString &alias);
@@ -145,6 +147,9 @@ Q_SIGNALS:
/** Emitted when another contact in the channel starts/stops typing (if supported by the protocol)*/
void userTypingChanged(Tp::ChannelChatState);
+ /** Emitted when a contact is blocked or unblocked */
+ void contactBlockStatusChanged(bool blocked);
+
void contactPresenceChanged(KTp::Presence presence);
void unreadMessagesChanged();
--
ktp-text-ui packaging
More information about the pkg-kde-commits
mailing list