00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __DS_MESSAGE_H_
00024 #define __DS_MESSAGE_H_
00025
00026 #include "global.h"
00027 #include <QDateTime>
00028 #include <QMetaType>
00029 #include <QString>
00030
00041 class MAIN_EXPORT Message : public QObject
00042 {
00043 Q_OBJECT
00044
00045 public:
00046 class Types
00047 {
00048 public:
00049 static const unsigned IGNORE_TYPE = 0;
00050
00051 static const unsigned CUSTOM_INFORMATION = 1;
00052
00053 static const unsigned CUSTOM_ERROR = 0x7fffffff;
00054 static const unsigned BANNED_FROM_MASTERSERVER = CUSTOM_ERROR + 1;
00055 };
00056
00061 static Message customError(const QString& content)
00062 {
00063 return Message(Types::CUSTOM_ERROR, content);
00064 }
00065
00070 static Message customInformation(const QString& content)
00071 {
00072 return Message(Types::CUSTOM_INFORMATION, content);
00073 }
00074
00075 static QString getStringBasingOnType(unsigned type);
00076
00077 static bool isCustom(unsigned type)
00078 {
00079 return type == Types::CUSTOM_ERROR || type == Types::CUSTOM_INFORMATION;
00080 }
00081
00082 static bool isError(unsigned type)
00083 {
00084 return type >= Types::CUSTOM_ERROR;
00085 }
00086
00087 static bool isIgnore(unsigned type)
00088 {
00089 return type == Types::IGNORE_TYPE;
00090 }
00091
00092 static bool isInformation(unsigned type)
00093 {
00094 return (type >= Types::CUSTOM_INFORMATION) && (type < Types::CUSTOM_ERROR);
00095 }
00096
00097 Message()
00098 {
00099 construct();
00100 this->_type = Types::IGNORE_TYPE;
00101 }
00102
00103 ~Message() {}
00104
00105 Message(const Message& other)
00106 {
00107 copy(other);
00108 }
00109
00110 Message(unsigned type)
00111 {
00112 construct();
00113 this->_type = type;
00114 }
00115
00116 Message(unsigned type, const QString& content)
00117 {
00118 construct();
00119 this->content = content;
00120 this->_type = type;
00121 }
00122
00123 Message& operator=(const Message& other)
00124 {
00125 if (this != &other)
00126 {
00127 copy(other);
00128 }
00129
00130 return *this;
00131 }
00132
00133 const QString& contents() const
00134 {
00135 return content;
00136 }
00137
00138 QString getStringBasingOnType() const
00139 {
00140 return getStringBasingOnType(_type);
00141 }
00142
00143 bool isCustom() const
00144 {
00145 return isCustom(_type);
00146 }
00147
00148 bool isError() const
00149 {
00150 return isError(_type);
00151 }
00152
00153 bool isIgnore() const
00154 {
00155 return isIgnore(_type);
00156 }
00157
00158 bool isInformation() const
00159 {
00160 return isInformation(_type);
00161 }
00162
00163 unsigned timestamp() const
00164 {
00165 return _timestamp;
00166 }
00167
00168 unsigned type() const
00169 {
00170 return _type;
00171 }
00172
00173 private:
00174 QString content;
00175 unsigned _timestamp;
00176 unsigned _type;
00177
00178 void copy(const Message& other)
00179 {
00180 this->content = other.content;
00181 this->_timestamp = other._timestamp;
00182 this->_type = other._type;
00183 }
00184
00185 void construct();
00186 };
00187
00188 Q_DECLARE_METATYPE(Message)
00189
00190 #endif