summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2007-08-22 16:32:52 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2007-08-22 16:32:52 +0000
commit4346b429cc875a85095fff271a8d82a46c2cfc91 (patch)
tree45c427f607ef331f3be5dd0b29d960cf01076cc6 /src
parent10ebf4484985b98e9248c8de84b35af9b6e26d3a (diff)
downloadmana-client-4346b429cc875a85095fff271a8d82a46c2cfc91.tar.gz
mana-client-4346b429cc875a85095fff271a8d82a46c2cfc91.tar.bz2
mana-client-4346b429cc875a85095fff271a8d82a46c2cfc91.tar.xz
mana-client-4346b429cc875a85095fff271a8d82a46c2cfc91.zip
Added trimming of chat messages.
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/Makefile.am1
-rw-r--r--src/gui/chat.cpp9
-rw-r--r--src/utils/fastsqrt.h2
-rw-r--r--src/utils/minmax.h1
-rw-r--r--src/utils/trim.h48
6 files changed, 60 insertions, 2 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 6bdaeb68..ba4ae221 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -265,6 +265,7 @@ SET(SRCS
utils/fastsqrt.h
utils/minmax.h
utils/tostring.h
+ utils/trim.h
utils/xml.cpp
utils/xml.h
animatedsprite.cpp
diff --git a/src/Makefile.am b/src/Makefile.am
index 9189e973..d2e4d1c9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -214,6 +214,7 @@ tmw_SOURCES = gui/widgets/resizegrip.cpp \
utils/fastsqrt.h \
utils/minmax.h \
utils/tostring.h \
+ utils/trim.h \
utils/xml.cpp \
utils/xml.h \
animatedsprite.cpp \
diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp
index aea92d4f..d760f18d 100644
--- a/src/gui/chat.cpp
+++ b/src/gui/chat.cpp
@@ -39,6 +39,8 @@
#include "../net/messageout.h"
#include "../net/protocol.h"
+#include "../utils/trim.h"
+
ChatWindow::ChatWindow(Network *network):
Window(""),
mNetwork(network),
@@ -109,12 +111,15 @@ ChatWindow::chatLog(std::string line, int own)
own = BY_SERVER;
}
- int pos = line.find(" : ");
- if (pos > 0) {
+ std::string::size_type pos = line.find(" : ");
+ if (pos != std::string::npos) {
tmp.nick = line.substr(0, pos);
line.erase(0, pos + 3);
}
+ // Trim whitespace
+ trim(line);
+
std::string lineColor = "##0"; // Equiv. to BrowserBox::BLACK
switch (own) {
case BY_GM:
diff --git a/src/utils/fastsqrt.h b/src/utils/fastsqrt.h
index 8da1d354..afadb901 100644
--- a/src/utils/fastsqrt.h
+++ b/src/utils/fastsqrt.h
@@ -5,6 +5,8 @@
* http://www.math.purdue.edu/~clomont/Math/Papers/2003/InvSqrt.pdf
*
* Unfortunately the original creator of this function seems to be unknown.
+ *
+ * $Id$
*/
float fastInvSqrt(float x)
diff --git a/src/utils/minmax.h b/src/utils/minmax.h
index 1add2b7e..088a23ef 100644
--- a/src/utils/minmax.h
+++ b/src/utils/minmax.h
@@ -18,6 +18,7 @@
* along with The Mana World; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
+ * $Id$
*/
/**
diff --git a/src/utils/trim.h b/src/utils/trim.h
new file mode 100644
index 00000000..19d37909
--- /dev/null
+++ b/src/utils/trim.h
@@ -0,0 +1,48 @@
+/*
+ * The Mana World
+ * Copyright 2007 The Mana World Development Team
+ *
+ * This file is part of The Mana World.
+ *
+ * The Mana World is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * any later version.
+ *
+ * The Mana World is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with The Mana World; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * $Id$
+ */
+
+#include <string>
+
+/**
+ * Trims spaces off the end and the beginning of the given string.
+ *
+ * @param str the string to trim spaces off
+ */
+void trim(std::string &str)
+{
+ std::string::size_type pos = str.find_last_not_of(' ');
+ if (pos != std::string::npos)
+ {
+ str.erase(pos + 1);
+ pos = str.find_first_not_of(' ');
+ if (pos != std::string::npos)
+ {
+ str.erase(0, pos);
+ }
+ }
+ else
+ {
+ // There is nothing else but whitespace in the string
+ str.clear();
+ }
+}