diff options
Diffstat (limited to 'Swift/Controllers/Roster/ContactRosterItem.cpp')
| -rw-r--r-- | Swift/Controllers/Roster/ContactRosterItem.cpp | 39 | 
1 files changed, 30 insertions, 9 deletions
diff --git a/Swift/Controllers/Roster/ContactRosterItem.cpp b/Swift/Controllers/Roster/ContactRosterItem.cpp index 8c388bf..70b4a1b 100644 --- a/Swift/Controllers/Roster/ContactRosterItem.cpp +++ b/Swift/Controllers/Roster/ContactRosterItem.cpp @@ -8,11 +8,15 @@  #include "Swift/Controllers/Roster/GroupRosterItem.h"  #include <Swiften/Base/foreach.h> +#include <Swiften/Base/DateTime.h> +#include <Swiften/Elements/Idle.h> + +#include <boost/date_time/posix_time/posix_time.hpp>  namespace Swift { -ContactRosterItem::ContactRosterItem(const JID& jid, const JID& displayJID, const std::string& name, GroupRosterItem* parent) : RosterItem(name, parent), jid_(jid), displayJID_(displayJID) { +ContactRosterItem::ContactRosterItem(const JID& jid, const JID& displayJID, const std::string& name, GroupRosterItem* parent) : RosterItem(name, parent), jid_(jid), displayJID_(displayJID), blockState_(BlockingNotSupported) {  }  ContactRosterItem::~ContactRosterItem() { @@ -24,12 +28,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; @@ -39,11 +43,20 @@ std::string ContactRosterItem::getStatusText() const {  	return shownPresence_ ? shownPresence_->getStatus() : "";  } -void ContactRosterItem::setAvatarPath(const std::string& path) { +std::string ContactRosterItem::getIdleText() const { +	Idle::ref idle = shownPresence_ ? shownPresence_->getPayload<Idle>() : Idle::ref(); +	if (!idle || idle->getSince().is_not_a_date_time()) { +		return ""; +	} else { +		return dateTimeToLocalString(idle->getSince()); +	} +} + +void ContactRosterItem::setAvatarPath(const boost::filesystem::path& path) {  	avatarPath_ = path;  	onDataChanged();  } -const std::string& ContactRosterItem::getAvatarPath() const { +const boost::filesystem::path& ContactRosterItem::getAvatarPath() const {  	return avatarPath_;  } @@ -121,6 +134,14 @@ bool ContactRosterItem::supportsFeature(const Feature feature) const {  	return features_.find(feature) != features_.end();  } +void ContactRosterItem::setBlockState(BlockState state) { +	blockState_ = state; +} + +ContactRosterItem::BlockState ContactRosterItem::blockState() const { +	return blockState_; +} +  }  | 
 Swift