Tianchi  v0.0.2 build 20130701
C++ library for Qt with VC & mingW
tcclasses.h
1 // **************************************************************************
2 // Tianchi C++ library for Qt (open source)
3 // 天池共享源码库
4 // 版权所有 (C) 天池共享源码库开发组
5 // 授权协议:请阅读天池共享源码库附带的授权协议
6 // **************************************************************************
7 // 文档说明:一些常用的小类
8 // ==========================================================================
9 // 开发日志:
10 // 日期 人员 说明
11 // --------------------------------------------------------------------------
12 // 2013.04.10 圣域天子 建立
13 // 2013.04.29 XChinux remove AuthLevel type's typedef keywords
14 // ==========================================================================
16 #ifndef TIANCHI_TCCLASSES_H
17 #define TIANCHI_TCCLASSES_H
18 
19 #include <tianchi/tcglobal.h>
20 
21 #include <QDateTime>
22 #include <QObject>
23 #include <QString>
24 #include <QStringList>
25 #include <QElapsedTimer>
26 #include <QHash>
27 
31 class TIANCHI_API TcPlayer : public QObject
32 {
33  Q_OBJECT
34 
35  Q_PROPERTY(int userNo READ userNo WRITE setUserNo )
36  Q_PROPERTY(QString userID READ userID WRITE setUserID )
37  Q_PROPERTY(QString username READ username WRITE setUsername )
38  Q_PROPERTY(bool loggedIn READ loggedIn WRITE setLoggedIn )
39  Q_PROPERTY(QDateTime loginTime READ loginTime WRITE setLoginTime)
40 
41 public:
43  enum AuthLevel
44  {
45  AUTH_SYSADMIN = 999,
46  AUTH_ADMIN = 888,
47  AUTH_MANAGER = 99,
48  AUTH_USER = 9,
49  AUTH_GUEST = 1,
50  };
51 
53  TcPlayer();
54 
56  TcPlayer &operator=(const TcPlayer&);
57 
59  inline int userNo() const
60  {
61  return m_userNo;
62  }
64  inline void setUserNo(int value)
65  {
66  m_userNo = value;
67  }
69  inline QString userID() const
70  {
71  return m_userID;
72  }
74  inline void setUserID(const QString& value)
75  {
76  m_userID = value.trimmed();
77  }
79  inline QString username() const
80  {
81  return m_username;
82  }
84  inline void setUsername(const QString& value)
85  {
86  m_username = value.trimmed();
87  }
89  inline int userLevel() const
90  {
91  return m_userLevel;
92  }
94  inline void setUserLevel(int value)
95  {
96  m_userLevel = value;
97  }
98 
103  int authority(const QString& key) const;
105  inline void setAuthority(const QString& key, int auth)
106  {
107  m_authority[key] = auth;
108  }
110  void setAuthorityText(const QString& value);
112  void setAuthorityText(const QStringList& value);
113 
115  inline QString loginID() const
116  {
117  return m_loginID;
118  }
120  inline void setLoginID(const QString& value)
121  {
122  m_loginID = value.trimmed();
123  }
125  inline QString password() const
126  {
127  return m_password;
128  }
130  inline void setPassword(const QString& value)
131  {
132  m_password = value.trimmed();
133  }
135  inline bool loggedIn() const
136  {
137  return m_loggedIn;
138  }
140  void setLoggedIn(bool value);
142  inline void setLoggedIn()
143  {
144  setLoggedIn(true);
145  }
147  inline QDateTime loginTime() const
148  {
149  return m_loginTime;
150  }
152  inline void setLoginTime(QDateTime value)
153  {
154  m_loginTime = value; m_loggedIn = true;
155  }
156 
159  inline int noLoginTime()
160  {
161  return m_loggedIn ? 0 : m_noLoginTimer.elapsed() / 1000;
162  }
163 
165  void clear();
166 
167 private:
168  int m_userNo;
169  QString m_userID;
170  QString m_username;
171  int m_userLevel;
172  QHash<QString, int> m_authority;
173 
174  QString m_loginID;
175  QString m_password;
176 
177  bool m_loggedIn;
178  QDateTime m_loginTime;
179  QElapsedTimer m_noLoginTimer;
180 };
181 
185 class TIANCHI_API TcInvoke
186 {
187 public:
189  TcInvoke(QObject* o=NULL, QByteArray m="")
190  {
191  init(o, m);
192  }
194  TcInvoke &operator=(const TcInvoke& from)
195  {
196  if ( this != &from )
197  {
198  this->m_object = from.m_object;
199  this->m_method = from.m_method;
200  }
201  return *this;
202  }
203 
205  inline bool queued(QGenericArgument val0 = QGenericArgument(0),
206  QGenericArgument val1 = QGenericArgument(),
207  QGenericArgument val2 = QGenericArgument(),
208  QGenericArgument val3 = QGenericArgument(),
209  QGenericArgument val4 = QGenericArgument(),
210  QGenericArgument val5 = QGenericArgument(),
211  QGenericArgument val6 = QGenericArgument(),
212  QGenericArgument val7 = QGenericArgument(),
213  QGenericArgument val8 = QGenericArgument(),
214  QGenericArgument val9 = QGenericArgument())
215  {
216  try
217  {
218  return m_object != NULL ? m_object->metaObject()->invokeMethod(
219  m_object, m_method, Qt::QueuedConnection,
220  val0, val1, val2, val3, val4,
221  val5, val6, val7, val8, val9) : false;
222  }
223  catch (...)
224  {
225  return false;
226  }
227  }
228 
230  bool invoke(QGenericArgument val0 = QGenericArgument(0),
231  QGenericArgument val1 = QGenericArgument(),
232  QGenericArgument val2 = QGenericArgument(),
233  QGenericArgument val3 = QGenericArgument(),
234  QGenericArgument val4 = QGenericArgument(),
235  QGenericArgument val5 = QGenericArgument(),
236  QGenericArgument val6 = QGenericArgument(),
237  QGenericArgument val7 = QGenericArgument(),
238  QGenericArgument val8 = QGenericArgument(),
239  QGenericArgument val9 = QGenericArgument());
240 
243  inline bool isValid() const
244  {
245  return m_object != NULL && ! m_method.isEmpty();
246  }
247 
248 private:
249  QObject* m_object;
250  QByteArray m_method;
251 
252  inline void init(QObject* o, QByteArray m)
253  {
254  m_object = o;
255  m_method = m;
256  }
257 };
258 
263 class TIANCHI_API TcDBFields
264 {
265 public:
266  TcDBFields() {}
267  inline TcDBFields(QHash<QString, QByteArray> fields)
268  { setFields(fields); }
269 
270  static void addField(QByteArray& fieldBytes,
271  const QString& name, const QVariant& value);
272  static QHash<QString, QByteArray> getFields(const QByteArray& fieldBytes);
273 
274  void setFields(QHash<QString, QByteArray> fields)
275  {
276  m_fields.clear();
277  m_keys.clear();
278 
279  m_fields = fields;
280  m_keys = m_fields.keys();
281  }
282  inline QByteArray value(const QString& key) const
283  {
284  return m_fields.value(key.trimmed().toLower());
285  }
286 
287 private:
288  QHash<QString, QByteArray> m_fields;
289  QStringList m_keys;
290 };
291 
292 #endif // TIANCHI_CLASSES_H