+void IrcUser::setAway(bool away)
+{
+ if (away != _away) {
+ _away = away;
+ markAwayChanged();
+ SYNC(ARG(away))
+ emit awaySet(away);
+ }
+}
+
+void IrcUser::setAwayMessage(const QString& awayMessage)
+{
+ if (!awayMessage.isEmpty() && _awayMessage != awayMessage) {
+ _awayMessage = awayMessage;
+ markAwayChanged();
+ SYNC(ARG(awayMessage))
+ }
+}
+
+void IrcUser::setIdleTime(const QDateTime& idleTime)
+{
+ if (idleTime.isValid() && _idleTime != idleTime) {
+ _idleTime = idleTime;
+ _idleTimeSet = QDateTime::currentDateTime();
+ SYNC(ARG(idleTime))
+ }
+}
+
+void IrcUser::setLoginTime(const QDateTime& loginTime)
+{
+ if (loginTime.isValid() && _loginTime != loginTime) {
+ _loginTime = loginTime;
+ SYNC(ARG(loginTime))
+ }
+}
+
+void IrcUser::setServer(const QString& server)
+{
+ if (!server.isEmpty() && _server != server) {
+ _server = server;
+ SYNC(ARG(server))
+ }
+}
+
+void IrcUser::setIrcOperator(const QString& ircOperator)
+{
+ if (!ircOperator.isEmpty() && _ircOperator != ircOperator) {
+ _ircOperator = ircOperator;
+ SYNC(ARG(ircOperator))
+ }
+}
+
+// This function is only ever called by SYNC calls from legacy cores (pre-0.13).
+// Therefore, no SYNC call is needed here.
+void IrcUser::setLastAwayMessage(int lastAwayMessage)
+{
+#if QT_VERSION >= 0x050800
+ QDateTime lastAwayMessageTime = QDateTime::fromSecsSinceEpoch(lastAwayMessage);
+#else
+ // toSecsSinceEpoch() was added in Qt 5.8. Manually downconvert to seconds for now.
+ // See https://doc.qt.io/qt-5/qdatetime.html#toMSecsSinceEpoch
+ QDateTime lastAwayMessageTime = QDateTime::fromMSecsSinceEpoch(lastAwayMessage * 1000);
+#endif
+ lastAwayMessageTime.setTimeSpec(Qt::UTC);
+ setLastAwayMessageTime(lastAwayMessageTime);