X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fidentity.cpp;h=6cb37808c5235a2ee3cf81373b328bb0a7332eec;hp=b8afedf03c1a4f13801769ea3d2cb65d613a75ce;hb=a72e2b4a90ce18c58b54e111161691ba008dc47d;hpb=9e5ced750e86fc8b5d0d6b69b927323a2de7c3ec diff --git a/src/common/identity.cpp b/src/common/identity.cpp index b8afedf0..6cb37808 100644 --- a/src/common/identity.cpp +++ b/src/common/identity.cpp @@ -22,6 +22,7 @@ #include #include +#include #ifdef Q_OS_MAC # include @@ -41,6 +42,7 @@ # include #endif +INIT_SYNCABLE_OBJECT(Identity) Identity::Identity(IdentityId id, QObject *parent) : SyncableObject(parent), _identityId(id) @@ -74,6 +76,18 @@ Identity::Identity(const Identity &other, QObject *parent) init(); } +#ifdef Q_WS_WIN +#ifdef UNICODE +QString tcharToQString(TCHAR *tchar){ + return QString::fromUtf16( reinterpret_cast(tchar)); +} +#else +QString tcharToQString(TCHAR *tchar){ + return QString::fromLocal8Bit(tchar); +} +#endif + +#endif void Identity::init() { setObjectName(QString::number(id().toInt())); setAllowClientUpdates(true); @@ -88,7 +102,10 @@ QString Identity::defaultNick() { nick = shortUserName; #elif defined(Q_OS_UNIX) - QString userName = getlogin(); + QString userName; + struct passwd *pwd = getpwuid(getuid()); + if(pwd) + userName = pwd->pw_name; if(!userName.isEmpty()) nick = userName; @@ -97,7 +114,7 @@ QString Identity::defaultNick() { DWORD bufCharCount = 128; //if(GetUserNameEx(/* NameSamCompatible */ 1, infoBuf, &bufCharCount)) if(GetUserNameEx(NameSamCompatible, infoBuf, &bufCharCount)) { - QString nickName(infoBuf); + QString nickName(tcharToQString(infoBuf)); int lastBs = nickName.lastIndexOf('\\'); if(lastBs != -1) { nickName = nickName.mid(lastBs + 1); @@ -108,20 +125,32 @@ QString Identity::defaultNick() { #endif // cleaning forbidden characters from nick - QRegExp rx(QString("(^[\\d-]+|[^A-Za-z\x5b-\x60\x7b-\x7d])")); + QRegExp rx(QString("(^[\\d-]+|[^A-Za-z0-9\x5b-\x60\x7b-\x7d])")); nick.remove(rx); return nick; } QString Identity::defaultRealName() { QString generalDefault = tr("Quassel IRC User"); + #ifdef Q_OS_MAC return CFStringToQString(CSCopyUserName(false)); + +#elif defined(Q_OS_UNIX) + QString realName; + struct passwd *pwd = getpwuid(getuid()); + if(pwd) + realName = QString::fromUtf8(pwd->pw_gecos); + if(!realName.isEmpty()) + return realName; + else + return generalDefault; + #elif defined(Q_OS_WIN32) TCHAR infoBuf[128]; DWORD bufCharCount = 128; if(GetUserName(infoBuf, &bufCharCount)) - return QString(infoBuf); + return tcharToQString(infoBuf); else return generalDefault; #else @@ -132,8 +161,7 @@ QString Identity::defaultRealName() { void Identity::setToDefaults() { setIdentityName(tr("")); setRealName(defaultRealName()); - QStringList n; - n << defaultNick() << defaultNick() + "_" << defaultNick() + "__"; + QStringList n = QStringList() << defaultNick(); setNicks(n); setAwayNick(""); setAwayNickEnabled(false); @@ -156,98 +184,100 @@ void Identity::setToDefaults() { void Identity::setId(IdentityId _id) { _identityId = _id; + SYNC(ARG(_id)) emit idSet(_id); renameObject(QString::number(id().toInt())); } void Identity::setIdentityName(const QString &identityName) { _identityName = identityName; - emit identityNameSet(identityName); + SYNC(ARG(identityName)) } void Identity::setRealName(const QString &realName) { _realName = realName; - emit realNameSet(realName); + SYNC(ARG(realName)) } void Identity::setNicks(const QStringList &nicks) { _nicks = nicks; + SYNC(ARG(nicks)) emit nicksSet(nicks); } void Identity::setAwayNick(const QString &nick) { _awayNick = nick; - emit awayNickSet(nick); + SYNC(ARG(nick)) } void Identity::setAwayReason(const QString &reason) { _awayReason = reason; - emit awayReasonSet(reason); + SYNC(ARG(reason)) } void Identity::setAwayNickEnabled(bool enabled) { _awayNickEnabled = enabled; - emit awayNickEnabledSet(enabled); + SYNC(ARG(enabled)) } void Identity::setAwayReasonEnabled(bool enabled) { _awayReasonEnabled = enabled; - emit awayReasonEnabledSet(enabled); + SYNC(ARG(enabled)) } void Identity::setAutoAwayEnabled(bool enabled) { _autoAwayEnabled = enabled; - emit autoAwayEnabledSet(enabled); + SYNC(ARG(enabled)) } void Identity::setAutoAwayTime(int time) { _autoAwayTime = time; - emit autoAwayTimeSet(time); + SYNC(ARG(time)) } void Identity::setAutoAwayReason(const QString &reason) { _autoAwayReason = reason; - emit autoAwayReasonSet(reason); + SYNC(ARG(reason)) } void Identity::setAutoAwayReasonEnabled(bool enabled) { _autoAwayReasonEnabled = enabled; - emit autoAwayReasonEnabledSet(enabled); + SYNC(ARG(enabled)) } void Identity::setDetachAwayEnabled(bool enabled) { _detachAwayEnabled = enabled; - emit detachAwayEnabledSet(enabled); + SYNC(ARG(enabled)) } void Identity::setDetachAwayReason(const QString &reason) { _detachAwayReason = reason; - emit detachAwayReasonSet(reason); + SYNC(ARG(reason)) } void Identity::setDetachAwayReasonEnabled(bool enabled) { _detachAwayReasonEnabled = enabled; - emit detachAwayReasonEnabledSet(enabled); + SYNC(ARG(enabled)) } void Identity::setIdent(const QString &ident) { _ident = ident; - emit identSet(ident); + SYNC(ARG(ident)) } void Identity::setKickReason(const QString &reason) { _kickReason = reason; - emit kickReasonSet(reason); + SYNC(ARG(reason)) } void Identity::setPartReason(const QString &reason) { _partReason = reason; - emit partReasonSet(reason); + SYNC(ARG(reason)) } void Identity::setQuitReason(const QString &reason) { _quitReason = reason; - emit quitReasonSet(reason); + SYNC(ARG(reason)) } /*** ***/ @@ -297,3 +327,6 @@ QDataStream &operator>>(QDataStream &in, Identity &id) { return in; } +#ifdef HAVE_SSL +INIT_SYNCABLE_OBJECT(CertManager) +#endif // HAVE_SSL