diff options
| author | 2010-12-25 03:34:50 +0000 | |
|---|---|---|
| committer | 2010-12-25 03:34:50 +0000 | |
| commit | ee04e43db64357e6c0163eb1b2e2f49cd6e3a977 (patch) | |
| tree | ea32b52ff43e2a18f2ba581b06b5ab958959124a | |
| parent | Added the very first shy 'auto-join this channel' feature to the window popup... (diff) | |
| download | KVIrc-ee04e43db64357e6c0163eb1b2e2f49cd6e3a977.tar.gz KVIrc-ee04e43db64357e6c0163eb1b2e2f49cd6e3a977.tar.bz2 KVIrc-ee04e43db64357e6c0163eb1b2e2f49cd6e3a977.zip | |
More work on channel autojoin lists
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5227 17fca916-40b9-46aa-a4ea-0a15b648b75c
| -rw-r--r-- | src/kvilib/irc/kvi_ircserver.cpp | 12 | ||||
| -rw-r--r-- | src/kvilib/irc/kvi_network.cpp | 9 | ||||
| -rw-r--r-- | src/kvirc/kernel/kvi_ircconnection.cpp | 89 |
3 files changed, 61 insertions, 49 deletions
diff --git a/src/kvilib/irc/kvi_ircserver.cpp b/src/kvilib/irc/kvi_ircserver.cpp index 9d3ca9c74..e0333b781 100644 --- a/src/kvilib/irc/kvi_ircserver.cpp +++ b/src/kvilib/irc/kvi_ircserver.cpp @@ -175,14 +175,20 @@ QString KviServer::ircUri() void KviServer::setAutoJoinChannelList(QStringList * pNewChannelList) { - if(m_pAutoJoinChannelList) delete m_pAutoJoinChannelList; + if(m_pAutoJoinChannelList) + delete m_pAutoJoinChannelList; m_pAutoJoinChannelList = pNewChannelList; } void KviServer::setAutoJoinChannelList(const QString & szNewChannelList) { - if(m_pAutoJoinChannelList)delete m_pAutoJoinChannelList; - m_pAutoJoinChannelList = new QStringList(szNewChannelList.split(",")); + if(m_pAutoJoinChannelList) + delete m_pAutoJoinChannelList; + QStringList lChans = szNewChannelList.split(","); + if(lChans.isEmpty()) + m_pAutoJoinChannelList = NULL; + else + m_pAutoJoinChannelList = new QStringList(lChans); } bool KviServer::load(KviConfig * cfg, const QString & szPrefix) diff --git a/src/kvilib/irc/kvi_network.cpp b/src/kvilib/irc/kvi_network.cpp index 1ef7972cb..806e0faa1 100644 --- a/src/kvilib/irc/kvi_network.cpp +++ b/src/kvilib/irc/kvi_network.cpp @@ -61,8 +61,13 @@ void KviNetwork::setAutoJoinChannelList(QStringList * pNewChannelList) void KviNetwork::setAutoJoinChannelList(const QString & szNewChannelList) { - if(m_pChannelList)delete m_pChannelList; - m_pChannelList = new QStringList(szNewChannelList.split(",")); + if(m_pChannelList) + delete m_pChannelList; + QStringList lChans = szNewChannelList.split(","); + if(lChans.isEmpty()) + m_pChannelList = NULL; + else + m_pChannelList = new QStringList(lChans); } void KviNetwork::setNickServRuleSet(KviNickServRuleSet * s) diff --git a/src/kvirc/kernel/kvi_ircconnection.cpp b/src/kvirc/kernel/kvi_ircconnection.cpp index 21cf68b5c..58e47bca7 100644 --- a/src/kvirc/kernel/kvi_ircconnection.cpp +++ b/src/kvirc/kernel/kvi_ircconnection.cpp @@ -1516,6 +1516,11 @@ void KviIrcConnection::loginComplete(const QString & szNickName) // join saved channels + + // FIXME: It should be possible to delay the channel join process after identification + // (or maybe just delay by a fixed amount ?) + // (or maybe retry joining after a while ?) + QString szChannels,szProtectedChannels,szPasswords,szCurPass,szCurChan; if(!(m_pStateData->commandToExecAfterConnect().isEmpty())) @@ -1574,30 +1579,28 @@ void KviIrcConnection::loginComplete(const QString & szNickName) m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Auto-joining network specific channels")); QStringList * l = target()->network()->autoJoinChannelList(); - if(l->count()!=0) + for(QStringList::Iterator it = l->begin(); it != l->end(); ++it) { - for(QStringList::Iterator it = l->begin(); it != l->end(); ++it) + szCurPass=(*it).section(':',1); + szCurChan = (*it).section(':',0,0); + if(szCurChan.isEmpty()) + continue; + if(szCurPass.isEmpty()) { - szCurPass=(*it).section(':',1); - if(szCurPass.isEmpty()) - { - if(!szChannels.isEmpty()) - szChannels.append(","); - szCurChan = (*it).section(':',0,0); - if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) - szCurChan.prepend('#'); - szChannels.append(szCurChan); - } else { - if(!szProtectedChannels.isEmpty()) - szProtectedChannels.append(","); - szCurChan = (*it).section(':',0,0); - if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) - szCurChan.prepend('#'); - szProtectedChannels.append(szCurChan); - if(!szPasswords.isEmpty()) - szPasswords.append(","); - szPasswords.append(szCurPass); - } + if(!szChannels.isEmpty()) + szChannels.append(","); + if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) + szCurChan.prepend('#'); + szChannels.append(szCurChan); + } else { + if(!szProtectedChannels.isEmpty()) + szProtectedChannels.append(","); + if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) + szCurChan.prepend('#'); + szProtectedChannels.append(szCurChan); + if(!szPasswords.isEmpty()) + szPasswords.append(","); + szPasswords.append(szCurPass); } } } @@ -1608,30 +1611,28 @@ void KviIrcConnection::loginComplete(const QString & szNickName) m_pConsole->output(KVI_OUT_VERBOSE,__tr2qs("Auto-joining server specific channels")); QStringList * l = target()->server()->autoJoinChannelList(); - if(l->count()!=0) + for(QStringList::Iterator it = l->begin(); it != l->end(); ++it) { - for(QStringList::Iterator it = l->begin(); it != l->end(); ++it) + szCurPass=(*it).section(':',1); + szCurChan = (*it).section(':',0,0); + if(szCurChan.isEmpty()) + continue; + if(szCurPass.isEmpty()) { - szCurPass=(*it).section(':',1); - if(szCurPass.isEmpty()) - { - if(!szChannels.isEmpty()) - szChannels.append(","); - szCurChan = (*it).section(':',0,0); - if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) - szCurChan.prepend('#'); - szChannels.append(szCurChan); - } else { - if(!szProtectedChannels.isEmpty()) - szProtectedChannels.append(","); - szCurChan = (*it).section(':',0,0); - if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) - szCurChan.prepend('#'); - szProtectedChannels.append(szCurChan); - if(!szPasswords.isEmpty()) - szPasswords.append(","); - szPasswords.append(szCurPass); - } + if(!szChannels.isEmpty()) + szChannels.append(","); + if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) + szCurChan.prepend('#'); + szChannels.append(szCurChan); + } else { + if(!szProtectedChannels.isEmpty()) + szProtectedChannels.append(","); + if(!(szCurChan[0]=='#' || szCurChan[0]=='&' || szCurChan[0]=='!' || szCurChan[0]=='+')) + szCurChan.prepend('#'); + szProtectedChannels.append(szCurChan); + if(!szPasswords.isEmpty()) + szPasswords.append(","); + szPasswords.append(szCurPass); } } } |
