summaryrefslogtreecommitdiff
path: root/src/playerrelations.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2011-09-18 17:49:18 +0300
committerAndrei Karas <akaras@inbox.ru>2011-09-18 17:49:18 +0300
commit70b520b1e876f9698bb95baa2d274ea289a0c6bd (patch)
tree152c7519b0d9b8fb424af2373ec48db823a85575 /src/playerrelations.cpp
parent62ec17f6e489ec50f17219444468aeb8969dc961 (diff)
parent3b999f51c740d0541c53d223518e5e4bb482d996 (diff)
downloadplus-stripped1.1.9.18.tar.gz
plus-stripped1.1.9.18.tar.bz2
plus-stripped1.1.9.18.tar.xz
plus-stripped1.1.9.18.zip
Merge branch 'master' into strippedstripped1.1.9.18
Conflicts: src/guichan/cliprectangle.cpp src/guichan/focushandler.cpp src/guichan/gui.cpp src/guichan/include/guichan/cliprectangle.hpp src/guichan/include/guichan/inputevent.hpp src/guichan/include/guichan/keyevent.hpp src/guichan/include/guichan/mouseevent.hpp src/guichan/include/guichan/widgets/button.hpp src/guichan/include/guichan/widgets/checkbox.hpp src/guichan/include/guichan/widgets/dropdown.hpp src/guichan/include/guichan/widgets/radiobutton.hpp src/guichan/include/guichan/widgets/slider.hpp src/guichan/include/guichan/widgets/tab.hpp src/guichan/include/guichan/widgets/tabbedarea.hpp src/guichan/include/guichan/widgets/textfield.hpp src/guichan/include/guichan/widgets/window.hpp src/guichan/inputevent.cpp src/guichan/keyevent.cpp src/guichan/mouseevent.cpp src/guichan/widget.cpp src/guichan/widgets/button.cpp src/guichan/widgets/checkbox.cpp src/guichan/widgets/dropdown.cpp src/guichan/widgets/radiobutton.cpp src/guichan/widgets/slider.cpp src/guichan/widgets/tab.cpp src/guichan/widgets/tabbedarea.cpp src/guichan/widgets/textfield.cpp src/guichan/widgets/window.cpp
Diffstat (limited to 'src/playerrelations.cpp')
-rw-r--r--src/playerrelations.cpp28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/playerrelations.cpp b/src/playerrelations.cpp
index 5b25ae5fb..00a9d1cad 100644
--- a/src/playerrelations.cpp
+++ b/src/playerrelations.cpp
@@ -43,6 +43,21 @@
#define IGNORE_EMOTE_TIME 100
+class SortPlayersFunctor
+{
+ public:
+ bool operator() (const std::string &str1, const std::string &str2)
+ {
+ std::string s1 = str1;
+ std::string s2 = str2;
+ toLower(s1);
+ toLower(s2);
+ if (s1 == s2)
+ return str1 < str2;
+ return s1 < s2;
+ }
+} playersSorter;
+
// (De)serialisation class
class PlayerConfSerialiser :
public ConfigurationListManager<std::pair<std::string, PlayerRelation *>,
@@ -52,7 +67,7 @@ class PlayerConfSerialiser :
std::pair<std::string, PlayerRelation *> value,
ConfigurationObject *cobj)
{
- if (!value.second)
+ if (!cobj || !value.second)
return NULL;
cobj->setValue(NAME, value.first);
cobj->setValue(RELATION, toString(
@@ -65,6 +80,8 @@ class PlayerConfSerialiser :
readConfigItem(ConfigurationObject *cobj,
std::map<std::string, PlayerRelation *> *container)
{
+ if (!cobj)
+ return container;
std::string name = cobj->getValue(NAME, "");
if (name.empty())
return container;
@@ -139,6 +156,9 @@ int PlayerRelationsManager::getPlayerIgnoreStrategyIndex(
std::vector<PlayerIgnoreStrategy *> *strategies
= getPlayerIgnoreStrategies();
+ if (!strategies)
+ return -1;
+
for (unsigned int i = 0; i < strategies->size(); i++)
{
if ((*strategies)[i]->mShortName == name)
@@ -216,8 +236,6 @@ void PlayerRelationsManager::store()
void PlayerRelationsManager::signalUpdate(const std::string &name)
{
-// store();
-
for (std::list<PlayerRelationsListener *>::const_iterator
it = mListeners.begin(); it != mListeners.end(); ++it)
{
@@ -307,7 +325,7 @@ void PlayerRelationsManager::setRelation(const std::string &player_name,
PlayerRelation::Relation relation)
{
PlayerRelation *r = mRelations[player_name];
- if (r == NULL)
+ if (!r)
mRelations[player_name] = new PlayerRelation(relation);
else
r->mRelation = relation;
@@ -327,7 +345,7 @@ std::vector<std::string> * PlayerRelationsManager::getPlayers()
retval->push_back(it->first);
}
- sort(retval->begin(), retval->end());
+ sort(retval->begin(), retval->end(), playersSorter);
return retval;
}