aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Elvio Basello2008-10-22 21:14:12 +0000
committerGravatar Elvio Basello2008-10-22 21:14:12 +0000
commit28fb4478cd8686b62dabddc28d2fc883602145f4 (patch)
tree429bcc14a6c48ab483767acfc2c430197f2fdbb3 /src
parentmore work on identity profiles (wip); (diff)
downloadKVIrc-28fb4478cd8686b62dabddc28d2fc883602145f4.tar.gz
KVIrc-28fb4478cd8686b62dabddc28d2fc883602145f4.tar.bz2
KVIrc-28fb4478cd8686b62dabddc28d2fc883602145f4.zip
fixed altnick handling with identity profiles
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@2769 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src')
-rw-r--r--src/kvirc/sparser/kvi_sp_numeric.cpp95
1 files changed, 55 insertions, 40 deletions
diff --git a/src/kvirc/sparser/kvi_sp_numeric.cpp b/src/kvirc/sparser/kvi_sp_numeric.cpp
index d8a8d6757..352720146 100644
--- a/src/kvirc/sparser/kvi_sp_numeric.cpp
+++ b/src/kvirc/sparser/kvi_sp_numeric.cpp
@@ -54,6 +54,7 @@
#include "kvi_kvs_eventtriggers.h"
#include "kvi_kvs_script.h"
#include "kvi_kvs_variantlist.h"
+#include "kvi_identityprofile.h"
#include <QPixmap>
#include <QDateTime>
@@ -815,53 +816,67 @@ void KviServerParser::parseNumericEndOfWho(KviIrcMessage *msg)
void KviServerParser::parseLoginNicknameProblem(KviIrcMessage *msg)
{
// ops...not logged in yet...
- QString nextNick;
+ QString szNextNick;
unsigned int uNickCnt;
- switch(msg->connection()->stateData()->loginNickIndex())
+
+ // Check for identity profiles
+ KviIdentityProfileSet * pSet = KviIdentityProfileSet::instance();
+ bool bProfilesEnabled = pSet ? (pSet->isEnabled() && !pSet->isEmpty()) : false;
+ if(bProfilesEnabled)
{
- case 0:
- // used a server specific nickname
- KVI_OPTION_STRING(KviOption_stringNickname1).trimmed();
- if(KVI_OPTION_STRING(KviOption_stringNickname1).isEmpty())
- KVI_OPTION_STRING(KviOption_stringNickname1) = KVI_DEFAULT_NICKNAME1;
- nextNick = KVI_OPTION_STRING(KviOption_stringNickname1);
+ KviIdentityProfile * pProfile = pSet->findNetwork(msg->connection()->networkName());
+ if(pProfile)
+ {
+ szNextNick = pProfile->altNick();
uNickCnt = 1;
- case 1:
- // used the first nickname of the identity
- KVI_OPTION_STRING(KviOption_stringNickname2).trimmed();
- if(KVI_OPTION_STRING(KviOption_stringNickname2).isEmpty())
- KVI_OPTION_STRING(KviOption_stringNickname2) = KVI_DEFAULT_NICKNAME2;
- nextNick = KVI_OPTION_STRING(KviOption_stringNickname2);
- uNickCnt = 2;
- break;
- case 2:
- // used the second nickname of the identity
- KVI_OPTION_STRING(KviOption_stringNickname3).trimmed();
- if(KVI_OPTION_STRING(KviOption_stringNickname3).isEmpty())
- KVI_OPTION_STRING(KviOption_stringNickname3) = KVI_DEFAULT_NICKNAME3;
- nextNick = KVI_OPTION_STRING(KviOption_stringNickname3);
- uNickCnt = 3;
- break;
- default:
+ }
+ } else {
+ switch(msg->connection()->stateData()->loginNickIndex())
{
- // used all the nicknames of the identity
- // fall back to a random string...
- nextNick = msg->safeParam(1);
- nextNick.trimmed();
- if(nextNick.isEmpty())nextNick = KVI_DEFAULT_NICKNAME1;
- nextNick = nextNick.left(7);
- QString num;
- num.setNum(msg->connection()->stateData()->loginNickIndex());
- nextNick.append(num);
- uNickCnt = msg->connection()->stateData()->loginNickIndex() + 1;
+ case 0:
+ // used a server specific nickname
+ KVI_OPTION_STRING(KviOption_stringNickname1).trimmed();
+ if(KVI_OPTION_STRING(KviOption_stringNickname1).isEmpty())
+ KVI_OPTION_STRING(KviOption_stringNickname1) = KVI_DEFAULT_NICKNAME1;
+ szNextNick = KVI_OPTION_STRING(KviOption_stringNickname1);
+ uNickCnt = 1;
+ case 1:
+ // used the first nickname of the identity
+ KVI_OPTION_STRING(KviOption_stringNickname2).trimmed();
+ if(KVI_OPTION_STRING(KviOption_stringNickname2).isEmpty())
+ KVI_OPTION_STRING(KviOption_stringNickname2) = KVI_DEFAULT_NICKNAME2;
+ szNextNick = KVI_OPTION_STRING(KviOption_stringNickname2);
+ uNickCnt = 2;
+ break;
+ case 2:
+ // used the second nickname of the identity
+ KVI_OPTION_STRING(KviOption_stringNickname3).trimmed();
+ if(KVI_OPTION_STRING(KviOption_stringNickname3).isEmpty())
+ KVI_OPTION_STRING(KviOption_stringNickname3) = KVI_DEFAULT_NICKNAME3;
+ szNextNick = KVI_OPTION_STRING(KviOption_stringNickname3);
+ uNickCnt = 3;
+ break;
+ default:
+ {
+ // used all the nicknames of the identity
+ // fall back to a random string...
+ szNextNick = msg->safeParam(1);
+ szNextNick.trimmed();
+ if(szNextNick.isEmpty()) szNextNick = KVI_DEFAULT_NICKNAME1;
+ szNextNick = szNextNick.left(7);
+ QString num;
+ num.setNum(msg->connection()->stateData()->loginNickIndex());
+ szNextNick.append(num);
+ uNickCnt = msg->connection()->stateData()->loginNickIndex() + 1;
+ }
+ break;
}
- break;
}
QString szOldNick = msg->connection()->userInfo()->nickName();
- msg->console()->notifyListView()->nickChange(szOldNick,nextNick);
+ msg->console()->notifyListView()->nickChange(szOldNick,szNextNick);
- msg->connection()->userInfo()->setNickName(nextNick);
+ msg->connection()->userInfo()->setNickName(szNextNick);
msg->connection()->stateData()->setLoginNickIndex(uNickCnt);
if(uNickCnt > 7)
@@ -883,10 +898,10 @@ void KviServerParser::parseLoginNicknameProblem(KviIrcMessage *msg)
QString szWText = msg->connection()->decodeText(msg->safeTrailing());
msg->console()->output(KVI_OUT_NICKNAMEPROBLEM,
__tr2qs("No way to login as '\r!n\r%Q\r' (%d: %Q), trying '%Q'..."),
- &szActual,msg->numeric(),&szWText,&nextNick);
+ &szActual,msg->numeric(),&szWText,&szNextNick);
}
- KviQCString d = msg->connection()->encodeText(nextNick);
+ KviQCString d = msg->connection()->encodeText(szNextNick);
msg->connection()->sendFmtData("NICK %s",d.data());
}