summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swift/Controllers/ChatController.cpp1
-rw-r--r--Swift/Controllers/ChatWindow.h1
-rw-r--r--Swift/Controllers/NickResolver.cpp5
-rw-r--r--Swift/Controllers/UnitTest/NickResolverTest.cpp35
-rw-r--r--Swift/QtUI/QtChatWindow.cpp5
-rw-r--r--Swift/QtUI/QtChatWindow.h1
6 files changed, 33 insertions, 15 deletions
diff --git a/Swift/Controllers/ChatController.cpp b/Swift/Controllers/ChatController.cpp
index 32fc0c2..90e5567 100644
--- a/Swift/Controllers/ChatController.cpp
+++ b/Swift/Controllers/ChatController.cpp
@@ -16,6 +16,7 @@ ChatController::ChatController(const JID& self, StanzaChannel* stanzaChannel, IQ
: ChatControllerBase(self, stanzaChannel, iqRouter, chatWindowFactory, contact, presenceOracle, avatarManager) {
nickResolver_ = nickResolver;
presenceOracle_->onPresenceChange.connect(boost::bind(&ChatController::handlePresenceChange, this, _1, _2));
+ chatWindow_->setName(nickResolver_->jidToNick(toJID_));
}
bool ChatController::isIncomingMessageFromMe(boost::shared_ptr<Message>) {
diff --git a/Swift/Controllers/ChatWindow.h b/Swift/Controllers/ChatWindow.h
index dd71bf9..36788cf 100644
--- a/Swift/Controllers/ChatWindow.h
+++ b/Swift/Controllers/ChatWindow.h
@@ -22,6 +22,7 @@ namespace Swift {
virtual void addSystemMessage(const String& message) = 0;
virtual void addErrorMessage(const String& message) = 0;
+ virtual void setName(const String& name) = 0;
virtual void show() = 0;
virtual void setAvailableSecurityLabels(const std::vector<SecurityLabel>& labels) = 0;
virtual void setSecurityLabelsEnabled(bool enabled) = 0;
diff --git a/Swift/Controllers/NickResolver.cpp b/Swift/Controllers/NickResolver.cpp
index db1d2b4..0886079 100644
--- a/Swift/Controllers/NickResolver.cpp
+++ b/Swift/Controllers/NickResolver.cpp
@@ -11,10 +11,11 @@ NickResolver::NickResolver(boost::shared_ptr<XMPPRoster> xmppRoster) {
}
String NickResolver::jidToNick(const JID& jid) {
- if (xmppRoster_->containsJID(jid)) {
+ String nick;
+ if (xmppRoster_->containsJID(jid) && xmppRoster_->getNameForJID(jid) != "") {
return xmppRoster_->getNameForJID(jid);
}
- std::map<JID, String>::iterator it = map_.find(jid);
+ std::map<JID, String>::const_iterator it = map_.find(jid);
return (it == map_.end()) ? jid.toBare() : it->second;
}
diff --git a/Swift/Controllers/UnitTest/NickResolverTest.cpp b/Swift/Controllers/UnitTest/NickResolverTest.cpp
index 947d3d8..e3123f9 100644
--- a/Swift/Controllers/UnitTest/NickResolverTest.cpp
+++ b/Swift/Controllers/UnitTest/NickResolverTest.cpp
@@ -10,6 +10,7 @@ class NickResolverTest : public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(NickResolverTest);
CPPUNIT_TEST(testNoMatch);
+ CPPUNIT_TEST(testZeroLengthMatch);
CPPUNIT_TEST(testMatch);
CPPUNIT_TEST(testOverwrittenMatch);
CPPUNIT_TEST(testRemovedMatch);
@@ -23,37 +24,45 @@ class NickResolverTest : public CppUnit::TestFixture
void testNoMatch() {
boost::shared_ptr<XMPPRoster> xmppRoster(new XMPPRoster());
NickResolver resolver(xmppRoster);
- JID testling("foo@bar/baz");
+ JID testJID("foo@bar/baz");
- CPPUNIT_ASSERT_EQUAL(String("foo@bar"), resolver.jidToNick(testling));
+ CPPUNIT_ASSERT_EQUAL(String("foo@bar"), resolver.jidToNick(testJID));
+ }
+
+ void testZeroLengthMatch() {
+ boost::shared_ptr<XMPPRoster> xmppRoster(new XMPPRoster());
+ NickResolver resolver(xmppRoster);
+ JID testJID("foo@bar/baz");
+ xmppRoster->addContact(testJID, "", groups_);
+ CPPUNIT_ASSERT_EQUAL(String("foo@bar"), resolver.jidToNick(testJID));
}
void testMatch() {
boost::shared_ptr<XMPPRoster> xmppRoster(new XMPPRoster());
NickResolver resolver(xmppRoster);
- JID testling("foo@bar/baz");
- xmppRoster->addContact(testling, "Test", groups_);
+ JID testJID("foo@bar/baz");
+ xmppRoster->addContact(testJID, "Test", groups_);
- CPPUNIT_ASSERT_EQUAL(String("Test"), resolver.jidToNick(testling));
+ CPPUNIT_ASSERT_EQUAL(String("Test"), resolver.jidToNick(testJID));
}
void testOverwrittenMatch() {
boost::shared_ptr<XMPPRoster> xmppRoster(new XMPPRoster());
NickResolver resolver(xmppRoster);
- JID testling("foo@bar/baz");
- xmppRoster->addContact(testling, "FailTest", groups_);
- xmppRoster->addContact(testling, "Test", groups_);
+ JID testJID("foo@bar/baz");
+ xmppRoster->addContact(testJID, "FailTest", groups_);
+ xmppRoster->addContact(testJID, "Test", groups_);
- CPPUNIT_ASSERT_EQUAL(String("Test"), resolver.jidToNick(testling));
+ CPPUNIT_ASSERT_EQUAL(String("Test"), resolver.jidToNick(testJID));
}
void testRemovedMatch() {
boost::shared_ptr<XMPPRoster> xmppRoster(new XMPPRoster());
NickResolver resolver(xmppRoster);
- JID testling("foo@bar/baz");
- xmppRoster->addContact(testling, "FailTest", groups_);
- xmppRoster->removeContact(testling);
- CPPUNIT_ASSERT_EQUAL(String("foo@bar"), resolver.jidToNick(testling));
+ JID testJID("foo@bar/baz");
+ xmppRoster->addContact(testJID, "FailTest", groups_);
+ xmppRoster->removeContact(testJID);
+ CPPUNIT_ASSERT_EQUAL(String("foo@bar"), resolver.jidToNick(testJID));
}
};
diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp
index 8e916c3..f4e0b0b 100644
--- a/Swift/QtUI/QtChatWindow.cpp
+++ b/Swift/QtUI/QtChatWindow.cpp
@@ -121,6 +121,11 @@ void QtChatWindow::setUnreadMessageCount(int count) {
updateTitleWithUnreadCount();
}
+void QtChatWindow::setName(const String& name) {
+ contact_ = P2QSTRING(name);
+ updateTitleWithUnreadCount();
+}
+
void QtChatWindow::updateTitleWithUnreadCount() {
setWindowTitle(unreadCount_ > 0 ? QString("(%1) %2)").arg(unreadCount_).arg(contact_) : contact_);
emit titleUpdated();
diff --git a/Swift/QtUI/QtChatWindow.h b/Swift/QtUI/QtChatWindow.h
index 20a53b9..6e45d34 100644
--- a/Swift/QtUI/QtChatWindow.h
+++ b/Swift/QtUI/QtChatWindow.h
@@ -29,6 +29,7 @@ namespace Swift {
void setSecurityLabelsEnabled(bool enabled);
void setSecurityLabelsError();
SecurityLabel getSelectedSecurityLabel();
+ void setName(const String& name);
protected slots:
void qAppFocusChanged(QWidget* old, QWidget* now);