X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fidentity.cpp;h=c2fdeaf52ba174d00f7b034323f9716e099b31cb;hp=b25b5eb0ed3e65c3524cee50e7c9a5884d2b40ee;hb=21d8d7f0a79eeeb541664aa80ce481fdbfc41f09;hpb=7500eaafd4aa510c758eabd8c835c0c05b2587cd diff --git a/src/common/identity.cpp b/src/common/identity.cpp index b25b5eb0..c2fdeaf5 100644 --- a/src/common/identity.cpp +++ b/src/common/identity.cpp @@ -34,8 +34,23 @@ Identity::Identity(const Identity &other, QObject *parent) : QObject(parent), _realName(other.realName()), _nicks(other.nicks()), _awayNick(other.awayNick()), + _awayNickEnabled(other.awayNickEnabled()), _awayReason(other.awayReason()), - _returnMessage(other.returnMessage()) { + _awayReasonEnabled(other.awayReasonEnabled()), + _returnMessage(other.returnMessage()), + _returnMessageEnabled(other.returnMessageEnabled()), + _autoAwayEnabled(other.autoAwayEnabled()), + _autoAwayTime(other.autoAwayTime()), + _autoAwayReason(other.autoAwayReason()), + _autoAwayReasonEnabled(other.autoAwayReasonEnabled()), + _autoReturnMessage(other.autoReturnMessage()), + _autoReturnMessageEnabled(other.autoReturnMessageEnabled()), + _ident(other.ident()), + _kickReason(other.kickReason()), + _partReason(other.partReason()), + _quitReason(other.quitReason()) + +{ init(); } @@ -51,9 +66,26 @@ void Identity::setToDefaults() { n << QString("quassel%1").arg(qrand() & 0xff); // FIXME provide more sensible default nicks setNicks(n); setAwayNick(""); + setAwayNickEnabled(false); setAwayReason(tr("Gone fishing.")); + setAwayReasonEnabled(true); setReturnMessage(tr("Brought fish.")); + setReturnMessageEnabled(false); + setAutoAwayEnabled(false); + setAutoAwayTime(10); + setAutoAwayReason(tr("Not here. No, really. not here!")); + setAutoAwayReasonEnabled(false); + setAutoReturnMessage(tr("Back in action again!")); + setAutoReturnMessageEnabled(false); + setIdent("quassel"); + setKickReason(tr("Kindergarten is elsewhere!")); + setPartReason(tr("http://quassel-irc.org - Chat comfortably. Anywhere.")); + setQuitReason(tr("http://quassel-irc.org - Chat comfortably. Anywhere.")); + +} +bool Identity::isValid() const { + return (id() > 0); } bool Identity::initialized() const { @@ -84,15 +116,73 @@ QString Identity::awayNick() const { return _awayNick; } +bool Identity::awayNickEnabled() const { + return _awayNickEnabled; +} + QString Identity::awayReason() const { return _awayReason; } +bool Identity::awayReasonEnabled() const { + return _awayReasonEnabled; +} + QString Identity::returnMessage() const { return _returnMessage; } -////////////////////// +bool Identity::returnMessageEnabled() const { + return _returnMessageEnabled; +} + +bool Identity::autoAwayEnabled() const { + return _autoAwayEnabled; +} + +int Identity::autoAwayTime() const { + return _autoAwayTime; +} + +QString Identity::autoAwayReason() const { + return _autoAwayReason; +} + +bool Identity::autoAwayReasonEnabled() const { + return _autoAwayReasonEnabled; +} + +QString Identity::autoReturnMessage() const { + return _autoReturnMessage; +} + +bool Identity::autoReturnMessageEnabled() const { + return _autoReturnMessageEnabled; +} + +QString Identity::ident() const { + return _ident; +} + +QString Identity::kickReason() const { + return _kickReason; +} + +QString Identity::partReason() const +{return _partReason;} + +QString Identity::quitReason() const { + return _quitReason; +} + +/*** setters ***/ + +// NOTE: DO NOT USE ON SYNCHRONIZED OBJECTS! +void Identity::setId(IdentityId _id) { + _identityId = _id; + setObjectName(QString::number(id())); + //emit idSet(id); +} void Identity::setIdentityName(const QString &identityName) { _identityName = identityName; @@ -124,15 +214,102 @@ void Identity::setReturnMessage(const QString &message) { emit returnMessageSet(message); } +void Identity::setAwayNickEnabled(bool enabled) { + _awayNickEnabled = enabled; + emit awayNickEnabledSet(enabled); +} + +void Identity::setAwayReasonEnabled(bool enabled) { + _awayReasonEnabled = enabled; + emit awayReasonEnabledSet(enabled); +} + +void Identity::setReturnMessageEnabled(bool enabled) { + _returnMessageEnabled = enabled; + emit returnMessageEnabledSet(enabled); +} + +void Identity::setAutoAwayEnabled(bool enabled) { + _autoAwayEnabled = enabled; + emit autoAwayEnabledSet(enabled); +} + +void Identity::setAutoAwayTime(int time) { + _autoAwayTime = time; + emit autoAwayTimeSet(time); +} + +void Identity::setAutoAwayReason(const QString & reason) { + _autoAwayReason = reason; + emit autoAwayReasonSet(reason); +} + +void Identity::setAutoAwayReasonEnabled(bool enabled) { + _autoAwayReasonEnabled = enabled; + emit autoAwayReasonEnabledSet(enabled); +} + +void Identity::setAutoReturnMessage(const QString & message) { + _autoReturnMessage = message; + emit autoReturnMessageSet(message); +} + +void Identity::setAutoReturnMessageEnabled(bool enabled) { + _autoReturnMessageEnabled = enabled; + emit autoReturnMessageEnabledSet(enabled); +} + +void Identity::setIdent(const QString & ident) { + _ident = ident; + emit identSet(ident); +} + +void Identity::setKickReason(const QString & reason) { + _kickReason = reason; + emit kickReasonSet(reason); +} + +void Identity::setPartReason(const QString & reason) { + _partReason = reason; + emit partReasonSet(reason); +} + +void Identity::setQuitReason(const QString & reason) { + _quitReason = reason; + emit quitReasonSet(reason); +} + +/*** ***/ + void Identity::update(const Identity &other) { - for(int idx = 0; idx < metaObject()->propertyCount(); idx++) { - QMetaProperty metaProp = metaObject()->property(metaObject()->propertyOffset() + idx); +for(int idx = metaObject()->propertyOffset(); idx < metaObject()->propertyCount(); idx++) { + QMetaProperty metaProp = metaObject()->property(idx); Q_ASSERT(metaProp.isValid()); if(this->property(metaProp.name()) != other.property(metaProp.name())) { setProperty(metaProp.name(), other.property(metaProp.name())); } } } +#include +bool Identity::operator==(const Identity &other) { + for(int idx = metaObject()->propertyOffset(); idx < metaObject()->propertyCount(); idx++) { + QMetaProperty metaProp = metaObject()->property(idx); + Q_ASSERT(metaProp.isValid()); + QVariant v1 = this->property(metaProp.name()); + QVariant v2 = other.property(metaProp.name()); //qDebug() << v1 << v2; + // QVariant cannot compare custom types, so we need to check for this case + if(QString(v1.typeName()) == "IdentityId") { + if(v1.value() != v2.value()) return false; + } else { + if(v1 != v2) return false; + } + } + return true; +} + +bool Identity::operator!=(const Identity &other) { + return !(*this == other); +} /////////////////////////////// @@ -144,8 +321,21 @@ QDataStream &operator<<(QDataStream &out, const Identity &id) { i["RealName"] = id.realName(); i["Nicks"] = id.nicks(); i["AwayNick"] = id.awayNick(); + i["AwayNickEnabled"] = id.awayNickEnabled(); i["AwayReason"] = id.awayReason(); + i["AwayReasonEnabled"] = id.awayReasonEnabled(); i["ReturnMessage"] = id.returnMessage(); + i["ReturnMessageEnabled"] = id.returnMessageEnabled(); + i["AutoAwayEnabled"] = id.autoAwayEnabled(); + i["AutoAwayTime"] = id.autoAwayTime(); + i["AutoAwayReason"] = id.autoAwayReason(); + i["AutoAwayReasonEnabled"] = id.autoAwayReasonEnabled(); + i["AutoReturnMessage"] = id.autoReturnMessage(); + i["AutoReturnMessageEnabled"] = id.autoReturnMessageEnabled(); + i["Ident"] = id.ident(); + i["KickReason"] = id.kickReason(); + i["PartReason"] = id.partReason(); + i["QuitReason"] = id.quitReason(); out << i; return out; } @@ -158,7 +348,21 @@ QDataStream &operator>>(QDataStream &in, Identity &id) { id.setRealName(i["RealName"].toString()); id.setNicks(i["Nicks"].toStringList()); id.setAwayNick(i["AwayNick"].toString()); + id.setAwayNickEnabled(i["AwayNickEnabled"].toBool()); id.setAwayReason(i["AwayReason"].toString()); + id.setAwayReasonEnabled(i["AwayReasonEnabled"].toBool()); id.setReturnMessage(i["ReturnMessage"].toString()); + id.setReturnMessageEnabled(i["ReturnMessageEnabled"].toBool()); + id.setAutoAwayEnabled(i["AutoAwayEnabled"].toBool()); + id.setAutoAwayTime(i["AutoAwayTime"].toInt()); + id.setAutoAwayReason(i["AutoAwayReason"].toString()); + id.setAutoAwayReasonEnabled(i["AutoAwayReasonEnabled"].toBool()); + id.setAutoReturnMessage(i["AutoReturnMessage"].toString()); + id.setAutoReturnMessageEnabled(i["AutoReturnMessageEnabled"].toBool()); + id.setIdent(i["Ident"].toString()); + id.setKickReason(i["KickReason"].toString()); + id.setPartReason(i["PartReason"].toString()); + id.setQuitReason(i["QuitReason"].toString()); return in; } +