diff options
Diffstat (limited to 'Swift/Controllers/Roster')
| -rw-r--r-- | Swift/Controllers/Roster/ContactRosterItem.cpp | 12 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/LeastCommonSubsequence.h | 25 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/Roster.cpp | 4 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/Roster.h | 4 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/RosterController.h | 2 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/RosterItemOperation.h | 8 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/TableRoster.cpp | 7 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp | 20 | ||||
| -rw-r--r-- | Swift/Controllers/Roster/UnitTest/TableRosterTest.cpp | 2 | 
9 files changed, 44 insertions, 40 deletions
| diff --git a/Swift/Controllers/Roster/ContactRosterItem.cpp b/Swift/Controllers/Roster/ContactRosterItem.cpp index 8c388bf..5b1b6e0 100644 --- a/Swift/Controllers/Roster/ContactRosterItem.cpp +++ b/Swift/Controllers/Roster/ContactRosterItem.cpp @@ -24,12 +24,12 @@ StatusShow::Type ContactRosterItem::getStatusShow() const {  StatusShow::Type ContactRosterItem::getSimplifiedStatusShow() const {  	switch (shownPresence_ ? shownPresence_->getShow() : StatusShow::None) { -		case StatusShow::Online: return StatusShow::Online; break; -		case StatusShow::Away: return StatusShow::Away; break; -	 	case StatusShow::XA: return StatusShow::Away; break; -		case StatusShow::FFC: return StatusShow::Online; break; -		case StatusShow::DND: return StatusShow::DND; break; -		case StatusShow::None: return StatusShow::None; break; +		case StatusShow::Online: return StatusShow::Online; +		case StatusShow::Away: return StatusShow::Away; +	 	case StatusShow::XA: return StatusShow::Away; +		case StatusShow::FFC: return StatusShow::Online; +		case StatusShow::DND: return StatusShow::DND; +		case StatusShow::None: return StatusShow::None;  	}  	assert(false);  	return StatusShow::None; diff --git a/Swift/Controllers/Roster/LeastCommonSubsequence.h b/Swift/Controllers/Roster/LeastCommonSubsequence.h index dd3c95a..9d45679 100644 --- a/Swift/Controllers/Roster/LeastCommonSubsequence.h +++ b/Swift/Controllers/Roster/LeastCommonSubsequence.h @@ -1,5 +1,5 @@  /* - * Copyright (c) 2011 Remko Tronçon + * Copyright (c) 2011-2013 Remko Tronçon   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */ @@ -7,6 +7,7 @@  #pragma once  #include <vector> +#include <boost/numeric/conversion/cast.hpp>  namespace Swift {  	using std::equal_to; @@ -14,8 +15,8 @@ namespace Swift {  	namespace Detail {  		template<typename XIt, typename YIt, typename Length, typename Predicate>  		void computeLeastCommonSubsequenceMatrix(XIt xBegin, XIt xEnd, YIt yBegin, YIt yEnd, std::vector<Length>& result) { -			size_t width = std::distance(xBegin, xEnd) + 1; -			size_t height = std::distance(yBegin, yEnd)  + 1; +			size_t width = static_cast<size_t>(std::distance(xBegin, xEnd) + 1); +			size_t height = static_cast<size_t>(std::distance(yBegin, yEnd)  + 1);  			result.resize(width * height);  			// Initialize first row & column @@ -30,7 +31,7 @@ namespace Swift {  			Predicate predicate;  			for (size_t i = 1; i < width; ++i) {  				for (size_t j = 1; j < height; ++j) { -					result[i + j*width] = (predicate(*(xBegin + i-1), *(yBegin + j-1)) ? result[(i-1) + (j-1)*width] + 1 : std::max(result[i + (j-1)*width], result[i-1 + (j*width)])); +					result[i + j*width] = predicate(*(xBegin + boost::numeric_cast<long long>(i)-1), *(yBegin + boost::numeric_cast<long long >(j)-1)) ? result[(i-1) + (j-1)*width] + 1 : std::max(result[i + (j-1)*width], result[i-1 + (j*width)]);  				}  			}  		} @@ -46,29 +47,29 @@ namespace Swift {  		typename std::vector<X>::const_iterator yBegin = y.begin();  		while (xBegin < x.end() && yBegin < y.end() && insertRemovePredicate(*xBegin, *yBegin)) {  			if (updatePredicate(*xBegin, *yBegin)) { -				updates.push_back(std::distance(x.begin(), xBegin)); -				postUpdates.push_back(std::distance(y.begin(), yBegin)); +				updates.push_back(static_cast<size_t>(std::distance(x.begin(), xBegin))); +				postUpdates.push_back(static_cast<size_t>(std::distance(y.begin(), yBegin)));  			}  			++xBegin;  			++yBegin;  		} -		size_t prefixLength = std::distance(x.begin(), xBegin); +		size_t prefixLength = static_cast<size_t>(std::distance(x.begin(), xBegin));  		// Find & handle common suffix (Optimization to reduce LCS matrix size)  		typename std::vector<X>::const_reverse_iterator xEnd = x.rbegin();  		typename std::vector<X>::const_reverse_iterator yEnd = y.rbegin();  		while (xEnd.base() > xBegin && yEnd.base() > yBegin && insertRemovePredicate(*xEnd, *yEnd)) {  			if (updatePredicate(*xEnd, *yEnd)) { -				updates.push_back(std::distance(x.begin(), xEnd.base()) - 1); -				postUpdates.push_back(std::distance(y.begin(), yEnd.base()) - 1); +				updates.push_back(static_cast<size_t>(std::distance(x.begin(), xEnd.base()) - 1)); +				postUpdates.push_back(static_cast<size_t>(std::distance(y.begin(), yEnd.base()) - 1));  			}  			++xEnd;  			++yEnd;  		}  		// Compute lengths -		size_t xLength = std::distance(xBegin, xEnd.base()); -		size_t yLength = std::distance(yBegin, yEnd.base()); +		size_t xLength = static_cast<size_t>(std::distance(xBegin, xEnd.base())); +		size_t yLength = static_cast<size_t>(std::distance(yBegin, yEnd.base()));  		// Compute LCS matrix  		std::vector<unsigned int> lcs; @@ -77,7 +78,7 @@ namespace Swift {  		// Process LCS matrix  		size_t i = xLength;  		size_t j = yLength; -		const size_t width = xLength + 1; +		size_t width = xLength + 1;  		while (true) {  			if (i > 0 && j > 0 && insertRemovePredicate(x[prefixLength + i-1], y[prefixLength + j-1])) {  				// x[i-1] same diff --git a/Swift/Controllers/Roster/Roster.cpp b/Swift/Controllers/Roster/Roster.cpp index 65cf4d2..b5c5998 100644 --- a/Swift/Controllers/Roster/Roster.cpp +++ b/Swift/Controllers/Roster/Roster.cpp @@ -198,13 +198,13 @@ void Roster::removeFilter(RosterFilter *filter) {  }  void Roster::filterContact(ContactRosterItem* contact, GroupRosterItem* group) { -	int oldDisplayedSize = group->getDisplayedChildren().size(); +	size_t oldDisplayedSize = group->getDisplayedChildren().size();  	bool hide = true;  	foreach (RosterFilter *filter, filters_) {  		hide &= (*filter)(contact);  	}  	group->setDisplayed(contact, filters_.empty() || !hide); -	int newDisplayedSize = group->getDisplayedChildren().size(); +	size_t newDisplayedSize = group->getDisplayedChildren().size();  	if (oldDisplayedSize == 0 && newDisplayedSize > 0) {  		onGroupAdded(group);  	} diff --git a/Swift/Controllers/Roster/Roster.h b/Swift/Controllers/Roster/Roster.h index 2fcfba5..74547d6 100644 --- a/Swift/Controllers/Roster/Roster.h +++ b/Swift/Controllers/Roster/Roster.h @@ -36,10 +36,10 @@ class Roster {  		void applyOnItems(const RosterItemOperation& operation);  		void applyOnAllItems(const RosterItemOperation& operation);  		void applyOnItem(const RosterItemOperation& operation, const JID& jid); -		void addFilter(RosterFilter *filter) {filters_.push_back(filter);filterAll();}; +		void addFilter(RosterFilter *filter) {filters_.push_back(filter);filterAll();}  		void removeFilter(RosterFilter *filter);  		GroupRosterItem* getRoot(); -		std::vector<RosterFilter*> getFilters() {return filters_;}; +		std::vector<RosterFilter*> getFilters() {return filters_;}  		boost::signal<void (GroupRosterItem*)> onChildrenChanged;  		boost::signal<void (GroupRosterItem*)> onGroupAdded;  		boost::signal<void (RosterItem*)> onDataChanged; diff --git a/Swift/Controllers/Roster/RosterController.h b/Swift/Controllers/Roster/RosterController.h index 5e40124..ec07574 100644 --- a/Swift/Controllers/Roster/RosterController.h +++ b/Swift/Controllers/Roster/RosterController.h @@ -45,7 +45,7 @@ namespace Swift {  			RosterController(const JID& jid, XMPPRoster* xmppRoster, AvatarManager* avatarManager, MainWindowFactory* mainWindowFactory, NickManager* nickManager, NickResolver* nickResolver, PresenceOracle* presenceOracle, SubscriptionManager* subscriptionManager, EventController* eventController, UIEventStream* uiEventStream, IQRouter* iqRouter_, SettingsProvider* settings, EntityCapsProvider* entityCapsProvider, FileTransferOverview* fileTransferOverview);  			~RosterController();  			void showRosterWindow(); -			MainWindow* getWindow() {return mainWindow_;}; +			MainWindow* getWindow() {return mainWindow_;}  			boost::signal<void (StatusShow::Type, const std::string&)> onChangeStatusRequest;  			boost::signal<void ()> onSignOutRequest;  			void handleAvatarChanged(const JID& jid); diff --git a/Swift/Controllers/Roster/RosterItemOperation.h b/Swift/Controllers/Roster/RosterItemOperation.h index 691c8ef..f1dff8d 100644 --- a/Swift/Controllers/Roster/RosterItemOperation.h +++ b/Swift/Controllers/Roster/RosterItemOperation.h @@ -12,10 +12,10 @@ namespace Swift {  class RosterItemOperation {  	public: -		RosterItemOperation(bool requiresLookup = false, const JID& lookupJID = JID()) : requiresLookup_(requiresLookup), lookupJID_(lookupJID) {}; -		virtual ~RosterItemOperation() {}; -		bool requiresLookup() const {return requiresLookup_;}; -		const JID& lookupJID() const {return lookupJID_;};  +		RosterItemOperation(bool requiresLookup = false, const JID& lookupJID = JID()) : requiresLookup_(requiresLookup), lookupJID_(lookupJID) {} +		virtual ~RosterItemOperation() {} +		bool requiresLookup() const {return requiresLookup_;} +		const JID& lookupJID() const {return lookupJID_;}   		/**  		 * This is called when iterating over possible subjects, so must check it's  		 * applying to the right items - even if requiresLookup() is true an item diff --git a/Swift/Controllers/Roster/TableRoster.cpp b/Swift/Controllers/Roster/TableRoster.cpp index c00bf4f..eb036db 100644 --- a/Swift/Controllers/Roster/TableRoster.cpp +++ b/Swift/Controllers/Roster/TableRoster.cpp @@ -9,6 +9,7 @@  #include <boost/cast.hpp>  #include <cassert>  #include <algorithm> +#include <boost/numeric/conversion/cast.hpp>  #include <Swiften/Base/foreach.h>  #include <Swiften/Network/TimerFactory.h> @@ -132,13 +133,13 @@ void TableRoster::handleUpdateTimerTick() {  		computeIndexDiff<Item, ItemEquals, ItemNeedsUpdate >(sections[sectionUpdates[i]].items, newSections[sectionPostUpdates[i]].items, itemUpdates, itemPostUpdates, itemRemoves, itemInserts);  		size_t end = update.insertedRows.size();  		update.insertedRows.resize(update.insertedRows.size() + itemInserts.size()); -		std::transform(itemInserts.begin(), itemInserts.end(), update.insertedRows.begin() + end, CreateIndexForSection(sectionPostUpdates[i])); +		std::transform(itemInserts.begin(), itemInserts.end(), update.insertedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionPostUpdates[i]));  		end = update.deletedRows.size();  		update.deletedRows.resize(update.deletedRows.size() + itemRemoves.size()); -		std::transform(itemRemoves.begin(), itemRemoves.end(), update.deletedRows.begin() + end, CreateIndexForSection(sectionUpdates[i])); +		std::transform(itemRemoves.begin(), itemRemoves.end(), update.deletedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionUpdates[i]));  		end = update.updatedRows.size();  		update.updatedRows.resize(update.updatedRows.size() + itemUpdates.size()); -		std::transform(itemUpdates.begin(), itemUpdates.end(), update.updatedRows.begin() + end, CreateIndexForSection(sectionPostUpdates[i])); +		std::transform(itemUpdates.begin(), itemUpdates.end(), update.updatedRows.begin() + boost::numeric_cast<long long>(end), CreateIndexForSection(sectionPostUpdates[i]));  	}  	// Switch the old model with the new diff --git a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp index fbee894..e439c78 100644 --- a/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp +++ b/Swift/Controllers/Roster/UnitTest/RosterControllerTest.cpp @@ -84,7 +84,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  			ftOverview_ = new FileTransferOverview(ftManager_);  			rosterController_ = new RosterController(jid_, xmppRoster_, avatarManager_, mainWindowFactory_, nickManager_, nickResolver_, presenceOracle_, subscriptionManager_, eventController_, uiEventStream_, router_, settings_, entityCapsManager_, ftOverview_);  			mainWindow_ = mainWindowFactory_->last; -		}; +		}  		void tearDown() {  			delete rosterController_; @@ -105,7 +105,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  			delete uiEventStream_;  			delete settings_;  			delete xmppRoster_; -		}; +		}  	GroupRosterItem* groupChild(size_t i) {  		return dynamic_cast<GroupRosterItem*>(CHILDREN[i]); @@ -133,7 +133,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  		CPPUNIT_ASSERT(item2);  		CPPUNIT_ASSERT_EQUAL(presence->getStatus(), item2->getStatusText()); -	}; +	}  	void testHighestPresence() {  		std::vector<std::string> groups; @@ -153,7 +153,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  		ContactRosterItem* item = dynamic_cast<ContactRosterItem*>(dynamic_cast<GroupRosterItem*>(CHILDREN[0])->getChildren()[0]);  		CPPUNIT_ASSERT(item);  		CPPUNIT_ASSERT_EQUAL(highPresence->getStatus(), item->getStatusText()); -	}; +	}  	void testNotHighestPresence() {  		std::vector<std::string> groups; @@ -173,7 +173,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  		ContactRosterItem* item = dynamic_cast<ContactRosterItem*>(dynamic_cast<GroupRosterItem*>(CHILDREN[0])->getChildren()[0]);  		CPPUNIT_ASSERT(item);  		CPPUNIT_ASSERT_EQUAL(highPresence->getStatus(), item->getStatusText()); -	}; +	}  	void testUnavailablePresence() {  		std::vector<std::string> groups; @@ -215,7 +215,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  		CPPUNIT_ASSERT_EQUAL(lowPresenceOffline->getStatus(), high->getStatus());  		CPPUNIT_ASSERT_EQUAL(StatusShow::None, item->getStatusShow());  		CPPUNIT_ASSERT_EQUAL(lowPresenceOffline->getStatus(), item->getStatusText()); -	}; +	}  		void testAdd() {  			std::vector<std::string> groups; @@ -225,7 +225,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  			CPPUNIT_ASSERT_EQUAL(2, static_cast<int>(CHILDREN.size()));  			//CPPUNIT_ASSERT_EQUAL(std::string("Bob"), xmppRoster_->getNameForJID(JID("foo@bar.com"))); -		}; +		}   		void testAddSubscription() {  			std::vector<std::string> groups; @@ -242,7 +242,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(CHILDREN.size()));  			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(groupChild(0)->getChildren().size())); -		}; +		}  		void testReceiveRename() {  			std::vector<std::string> groups; @@ -256,7 +256,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(CHILDREN.size()));  			CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(groupChild(0)->getChildren().size()));  			CPPUNIT_ASSERT_EQUAL(std::string("NewName"), groupChild(0)->getChildren()[0]->getDisplayName()); -		}; +		}  	void testReceiveRegroup() {  		std::vector<std::string> oldGroups; @@ -282,7 +282,7 @@ class RosterControllerTest : public CppUnit::TestFixture {  		CPPUNIT_ASSERT_EQUAL(1, static_cast<int>(groupChild(0)->getChildren().size()));  		CPPUNIT_ASSERT_EQUAL(std::string("new name"), groupChild(0)->getChildren()[0]->getDisplayName());  		CPPUNIT_ASSERT_EQUAL(std::string("Best Group"), groupChild(0)->getDisplayName()); -	}; +	}  		void testSendRename() {  			JID jid("testling@wonderland.lit"); diff --git a/Swift/Controllers/Roster/UnitTest/TableRosterTest.cpp b/Swift/Controllers/Roster/UnitTest/TableRosterTest.cpp index e433b50..db8a2fd 100644 --- a/Swift/Controllers/Roster/UnitTest/TableRosterTest.cpp +++ b/Swift/Controllers/Roster/UnitTest/TableRosterTest.cpp @@ -6,6 +6,8 @@  #include <Swift/Controllers/Roster/TableRoster.h> +std::ostream& operator<<(std::ostream& os, const Swift::TableRoster::Index& i); +  std::ostream& operator<<(std::ostream& os, const Swift::TableRoster::Index& i) {  	os << "(" << i.section << ", " << i.row << ")";  	return os; | 
 Swift
 Swift