X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fidentity.cpp;h=aafb1fa0043be7a5bc001f4be4c34d89c60b6d58;hp=aee2e4a8116fd19e047eb8d7d099faeb205c1f7a;hb=389c57208c0f87c678fa682fb4299ea2803d5135;hpb=4c83963b1d77f4c2dbae606876be0eee59f53dae diff --git a/src/common/identity.cpp b/src/common/identity.cpp index aee2e4a8..aafb1fa0 100644 --- a/src/common/identity.cpp +++ b/src/common/identity.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,10 +18,22 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +#include "identity.h" + #include #include -#include "identity.h" +#ifdef Q_OS_MAC +# include +# include "mac_utils.h" +#endif + +#ifdef Q_OS_WIN32 +# include +# include +# define SECURITY_WIN32 +# include +#endif Identity::Identity(IdentityId id, QObject *parent) : SyncableObject(parent), @@ -61,11 +73,52 @@ void Identity::init() { setAllowClientUpdates(true); } +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 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 generalDefault; +#endif +} + void Identity::setToDefaults() { setIdentityName(tr("")); - setRealName(tr("Quassel IRC User")); + setRealName(defaultRealName()); QStringList n; - n << QString("quassel%1").arg(qrand() & 0xff); // FIXME provide more sensible default nicks + n << defaultNick(); setNicks(n); setAwayNick(""); setAwayNickEnabled(false); @@ -184,7 +237,7 @@ void Identity::setQuitReason(const QString &reason) { /*** ***/ -void Identity::update(const Identity &other) { +void Identity::copyFrom(const Identity &other) { for(int idx = staticMetaObject.propertyOffset(); idx < staticMetaObject.propertyCount(); idx++) { QMetaProperty metaProp = staticMetaObject.property(idx); Q_ASSERT(metaProp.isValid());