diff options
author | Kevin Smith <git@kismith.co.uk> | 2011-04-22 18:37:42 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2011-04-22 18:37:42 (GMT) |
commit | e66d257f786f034a7372780c7933312fe8b66dff (patch) | |
tree | c85f1f22a6ea1c29e24bd87e62db51c4f461da12 /Swift/Controllers/ChatMessageSummarizer.cpp | |
parent | 1a8df7d98e58adde9bd0611b5689507780393856 (diff) | |
download | swift-contrib-e66d257f786f034a7372780c7933312fe8b66dff.zip swift-contrib-e66d257f786f034a7372780c7933312fe8b66dff.tar.bz2 |
Merge unread tab titles legibly.
Release-Notes: Chat tabs with unread messages from several chats will now be a little more descriptive.
Resolves: #485
Diffstat (limited to 'Swift/Controllers/ChatMessageSummarizer.cpp')
-rw-r--r-- | Swift/Controllers/ChatMessageSummarizer.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Swift/Controllers/ChatMessageSummarizer.cpp b/Swift/Controllers/ChatMessageSummarizer.cpp new file mode 100644 index 0000000..682d88b --- /dev/null +++ b/Swift/Controllers/ChatMessageSummarizer.cpp @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2011 Kevin Smith + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <Swift/Controllers/ChatMessageSummarizer.h> + +#include <Swiften/Base/format.h> +#include <Swift/Controllers/Intl.h> +#include <Swiften/Base/foreach.h> + +using namespace Swift; +using namespace std; + +string ChatMessageSummarizer::getSummary(const string& current, const vector<UnreadPair>& unreads) { + vector<UnreadPair> others; + int currentUnread = 0; + int otherCount = 0; + foreach (UnreadPair unread, unreads) { + if (unread.first == current) { + currentUnread += unread.second; + } else { + if (unread.second > 0) { + otherCount += unread.second; + others.push_back(unread); + } + } + } + string myString(current); + + if (currentUnread > 0) { + string result(QT_TRANSLATE_NOOP("", "%1% (%2%)")); + myString = str(format(result) % current % currentUnread); + } + + if (others.size() > 1) { + string result(QT_TRANSLATE_NOOP("", "%1% and %2% others (%3%)")); + myString = str(format(result) % myString % others.size() % otherCount); + } else if (others.size() > 0) { + string result(QT_TRANSLATE_NOOP("", "%1%, %2% (%3%)")); + myString = str(format(result) % myString % others[0].first % otherCount); + } + return myString; +} |