From: Marcus Eggenberger Date: Sat, 7 Feb 2009 17:42:25 +0000 (+0100) Subject: more default nick and realname improvements X-Git-Tag: 0.4.0~112 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=389c57208c0f87c678fa682fb4299ea2803d5135 more default nick and realname improvements --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 26a3e9a4..9b691682 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -248,7 +248,7 @@ endif(STATIC AND CMAKE_COMPILER_IS_GNUCXX) if(WIN32) #if(STATIC) - link_libraries(imm32 winmm dbghelp) # missing by default :/ + link_libraries(imm32 winmm dbghelp Secur32) # missing by default :/ #endif(STATIC) if(HAVE_SSL) link_libraries(${OPENSSL_LIBRARIES} libeay32MD) diff --git a/src/common/identity.cpp b/src/common/identity.cpp index 31b8a4a2..aafb1fa0 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,43 @@ void Identity::init() { } QString Identity::defaultNick() { + QString generalDefault = QString("quassel%1").arg(qrand() & 0xff); // FIXME provide more sensible default nicks #ifdef Q_OS_MAC return CFStringToQString(CSCopyUserName(true)); +#elif defined(Q_OS_WIN32) + TCHAR infoBuf[128]; + DWORD bufCharCount = 128; + //if(GetUserNameEx(/* NameSamCompatible */ 1, infoBuf, &bufCharCount)) + if(!GetUserNameEx(NameSamCompatible, infoBuf, &bufCharCount)) + return generalDefault; + + QString nickName(infoBuf); + int lastBs = nickName.lastIndexOf('\\'); + if(lastBs != -1) { + nickName = nickName.mid(lastBs + 1); + } + if(nickName.isEmpty()) + return generalDefault; + else + return nickName; #else - return QString("quassel%1").arg(qrand() & 0xff); // FIXME provide more sensible default nicks + return generalDefault; #endif } 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 }