From d2b07202f6b71b0601d032dbf93778d0a656e808 Mon Sep 17 00:00:00 2001 From: Kevin Smith <git@kismith.co.uk> Date: Mon, 29 Mar 2010 19:54:23 +0100 Subject: Populate the chats list with muc bookmarks diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index d83c42e..8311726 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -50,7 +50,7 @@ ChatsManager::~ChatsManager() { void ChatsManager::handleMUCBookmarkAdded(boost::shared_ptr<MUCBookmark> bookmark) { std::map<JID, MUCController*>::iterator it = mucControllers_.find(bookmark->getRoom()); - if (it == mucControllers_.end()) { + if (it == mucControllers_.end() && bookmark->getAutojoin()) { //FIXME: need vcard stuff here to get a nick String nick = bookmark->getNick() ? bookmark->getNick().get() : "Swift user"; handleJoinMUCRequest(bookmark->getRoom(), nick); diff --git a/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp b/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp index 2bab1df..acc96db 100644 --- a/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp +++ b/Swift/Controllers/Chat/UnitTest/ChatsManagerTest.cpp @@ -6,6 +6,7 @@ #include "Swift/Controllers/UIInterfaces/ChatWindow.h" #include "Swift/Controllers/UIInterfaces/ChatWindowFactory.h" +#include "Swift/Controllers/UIInterfaces/ChatListWindowFactory.h" #include "Swiften/Roster/TreeWidgetFactory.h" #include "Swiften/Client/Client.h" #include "Swift/Controllers/Chat/ChatController.h" @@ -54,15 +55,16 @@ public: serverDiscoInfo_ = boost::shared_ptr<DiscoInfo>(new DiscoInfo()); presenceSender_ = NULL; uiEventStream_ = new UIEventStream(); - manager_ = new ChatsManager(jid_, stanzaChannel_, iqRouter_, eventController_, chatWindowFactory_, treeWidgetFactory_, nickResolver_, presenceOracle_, serverDiscoInfo_, presenceSender_, uiEventStream_); + chatListWindowFactory_ = mocks_->InterfaceMock<ChatListWindowFactory>(); + manager_ = new ChatsManager(jid_, stanzaChannel_, iqRouter_, eventController_, chatWindowFactory_, treeWidgetFactory_, nickResolver_, presenceOracle_, serverDiscoInfo_, presenceSender_, uiEventStream_, chatListWindowFactory_); avatarManager_ = new MockAvatarManager(); manager_->setAvatarManager(avatarManager_); }; void tearDown() { + delete avatarManager_; delete manager_; delete presenceSender_; - delete avatarManager_; delete presenceOracle_; delete nickResolver_; delete treeWidgetFactory_; @@ -267,6 +269,7 @@ private: PresenceSender* presenceSender_; MockRepository* mocks_; UIEventStream* uiEventStream_; + ChatListWindowFactory* chatListWindowFactory_; }; CPPUNIT_TEST_SUITE_REGISTRATION(ChatsManagerTest); diff --git a/Swift/QtUI/ChatList/ChatListGroupItem.h b/Swift/QtUI/ChatList/ChatListGroupItem.h index 82c9616..eb9729b 100644 --- a/Swift/QtUI/ChatList/ChatListGroupItem.h +++ b/Swift/QtUI/ChatList/ChatListGroupItem.h @@ -13,7 +13,7 @@ namespace Swift { int rowCount() {return items_.size();}; ChatListItem* item(int i) {return items_[i];}; int row(ChatListItem* item) {return items_.indexOf(item);}; - QVariant data(int role) {return "Bob";}; + QVariant data(int role) {return (role == Qt::DisplayRole) ? name_ : QVariant();}; private: QString name_; QList<ChatListItem*> items_; diff --git a/Swift/QtUI/ChatList/ChatListMUCItem.h b/Swift/QtUI/ChatList/ChatListMUCItem.h index dd3f185..b973ac2 100644 --- a/Swift/QtUI/ChatList/ChatListMUCItem.h +++ b/Swift/QtUI/ChatList/ChatListMUCItem.h @@ -11,9 +11,9 @@ namespace Swift { class ChatListMUCItem : public ChatListItem { public: - ChatListMUCItem(boost::shared_ptr<MUCBookmark> bookmark, ChatListGroupItem* parent) : ChatListItem(parent), bookmark_(bookmark) {}; - boost::shared_ptr<MUCBookmark> getBookmark() {return bookmark_;}; - QVariant data(int role) { return QVariant(); }; + ChatListMUCItem(boost::shared_ptr<MUCBookmark> bookmark, ChatListGroupItem* parent); + boost::shared_ptr<MUCBookmark> getBookmark(); + QVariant data(int role); private: boost::shared_ptr<MUCBookmark> bookmark_; QList<ChatListItem*> items_; diff --git a/Swift/QtUI/ChatList/ChatListModel.cpp b/Swift/QtUI/ChatList/ChatListModel.cpp index 246d45d..1a1bb80 100644 --- a/Swift/QtUI/ChatList/ChatListModel.cpp +++ b/Swift/QtUI/ChatList/ChatListModel.cpp @@ -7,12 +7,16 @@ namespace Swift { ChatListModel::ChatListModel() { root_ = new ChatListGroupItem("", NULL); mucBookmarks_ = new ChatListGroupItem("MUC Bookmarks", root_); + root_->addItem(mucBookmarks_); } void ChatListModel::addMUCBookmark(boost::shared_ptr<Swift::MUCBookmark> bookmark) { emit layoutAboutToBeChanged(); mucBookmarks_->addItem(new ChatListMUCItem(bookmark, mucBookmarks_)); emit layoutChanged(); + //QModelIndex index = createIndex(mucBookmarks_->rowCount() - 1, 0, mucBookmarks_); + //emit dataChanged(index, index); + //emit dataChanged(parent(index), parent(index)); } void ChatListModel::removeMUCBookmark(boost::shared_ptr<Swift::MUCBookmark> bookmark) { @@ -54,11 +58,17 @@ QModelIndex ChatListModel::parent(const QModelIndex& index) const { } int ChatListModel::rowCount(const QModelIndex& parentIndex) const { - ChatListGroupItem* parent = root_; + ChatListGroupItem* parent = NULL; + printf("Counting\n"); if (parentIndex.isValid()) { - parent = static_cast<ChatListGroupItem*>(parentIndex.internalPointer()); + printf("Valid index\n"); + parent = dynamic_cast<ChatListGroupItem*>(static_cast<ChatListItem*>(parentIndex.internalPointer())); + } else { + parent = root_; } - return parent ? parent->rowCount() : 0; + int count = (parent ? parent->rowCount() : 0); + printf("Count returned as %d, muc count is %d\n", count, mucBookmarks_->rowCount()); + return count; } } diff --git a/Swift/QtUI/SConscript b/Swift/QtUI/SConscript index d2e6c37..e0e41bc 100644 --- a/Swift/QtUI/SConscript +++ b/Swift/QtUI/SConscript @@ -88,6 +88,7 @@ sources = [ "ChatList/QtChatListWindowFactory.cpp", "ChatList/ChatListModel.cpp", "ChatList/ChatListDelegate.cpp", + "ChatList/ChatListMUCItem.cpp", "QtSubscriptionRequestWindow.cpp", "QtRosterHeader.cpp", "qrc_DefaultTheme.cc", -- cgit v0.10.2-6-g49f6