aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2010-12-25 03:34:50 +0000
committerGravatar Szymon Tomasz Stefanek2010-12-25 03:34:50 +0000
commitee04e43db64357e6c0163eb1b2e2f49cd6e3a977 (patch)
treeea32b52ff43e2a18f2ba581b06b5ab958959124a
parentAdded the very first shy 'auto-join this channel' feature to the window popup... (diff)
downloadKVIrc-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.cpp12
-rw-r--r--src/kvilib/irc/kvi_network.cpp9
-rw-r--r--src/kvirc/kernel/kvi_ircconnection.cpp89
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);
}
}
}