X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fidentity.cpp;h=40b0b2b6000034c78f7ef9e09896f732e369a7e8;hp=31b8a4a2d6ca1bdc30a3dc977a50028ea1989ba1;hb=9ffb7c204ea6d658dafdb626f50230d4b890008c;hpb=4bdaf5f2fd6d70155a60e13e125e80cb4b811a22 diff --git a/src/common/identity.cpp b/src/common/identity.cpp index 31b8a4a2..40b0b2b6 100644 --- a/src/common/identity.cpp +++ b/src/common/identity.cpp @@ -28,6 +28,13 @@ # include "mac_utils.h" #endif +#ifdef Q_OS_WIN32 +# include +# include +# define SECURITY_WIN32 +# include +#endif + Identity::Identity(IdentityId id, QObject *parent) : SyncableObject(parent), _identityId(id) @@ -67,18 +74,44 @@ void Identity::init() { } QString Identity::defaultNick() { + QString nick = QString("quassel%1").arg(qrand() & 0xff); // FIXME provide more sensible default nicks #ifdef Q_OS_MAC - return CFStringToQString(CSCopyUserName(true)); -#else - return QString("quassel%1").arg(qrand() & 0xff); // FIXME provide more sensible default nicks + QString shortUserName = CFStringToQString(CSCopyUserName(true)); + if(!shortUserName.isEmpty()) + nick = shortUserName; +#elif defined(Q_OS_WIN32) + TCHAR infoBuf[128]; + DWORD bufCharCount = 128; + //if(GetUserNameEx(/* NameSamCompatible */ 1, infoBuf, &bufCharCount)) + if(GetUserNameEx(NameSamCompatible, infoBuf, &bufCharCount)) { + QString nickName(infoBuf); + int lastBs = nickName.lastIndexOf('\\'); + if(lastBs != -1) { + nickName = nickName.mid(lastBs + 1); + } + if(!nickName.isEmpty()) + nick = nickName; + } #endif + // cleaning forbidden characters from nick + QRegExp rx(QString("(^[\\d-]+|[^A-Za-z\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_WIN32) + TCHAR infoBuf[128]; + DWORD bufCharCount = 128; + if(GetUserName(infoBuf, &bufCharCount)) + return QString(infoBuf); + else + return generalDefault; #else - return tr("Quassel IRC User"); + return generalDefault; #endif }