aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/regchan/libkviregchan.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/regchan/libkviregchan.cpp')
-rw-r--r--src/modules/regchan/libkviregchan.cpp101
1 files changed, 59 insertions, 42 deletions
diff --git a/src/modules/regchan/libkviregchan.cpp b/src/modules/regchan/libkviregchan.cpp
index 44e0989c8..d4adea0b8 100644
--- a/src/modules/regchan/libkviregchan.cpp
+++ b/src/modules/regchan/libkviregchan.cpp
@@ -29,7 +29,7 @@
#include "kvi_out.h"
#include "kvi_mirccntrl.h"
#include "kvi_window.h"
-
+#include "kvi_debug.h"
// kvi_app.cpp
extern KVIRC_API KviRegisteredChannelDataBase * g_pRegisteredChannelDataBase;
@@ -71,7 +71,8 @@ static bool regchan_kvs_cmd_add(KviKvsModuleCommandCall * c)
KVSM_PARAMETER("channel name",KVS_PT_NONEMPTYSTRING,0,szChan)
KVSM_PARAMETER("netmask",KVS_PT_STRING,KVS_PF_OPTIONAL,szNetmask)
KVSM_PARAMETERS_END(c)
- if(szNetmask.isEmpty())szNetmask="*";
+ if(szNetmask.isEmpty())
+ szNetmask="*";
g_pRegisteredChannelDataBase->add(new KviRegisteredChannel(szChan,szNetmask));
return true;
}
@@ -111,13 +112,16 @@ static bool regchan_kvs_cmd_remove(KviKvsModuleCommandCall * c)
KVSM_PARAMETER("network",KVS_PT_NONEMPTYSTRING,0,szNetwork)
KVSM_PARAMETERS_END(c)
KviRegisteredChannel * ch;
- if(c->hasSwitch('e',"exactly"))ch = g_pRegisteredChannelDataBase->findExact(szChan.toUtf8().data(),szNetwork.toUtf8().data());
- else ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ if(c->hasSwitch('e',"exactly"))
+ ch = g_pRegisteredChannelDataBase->findExact(szChan,szNetwork);
+ else
+ ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
if(ch)
{
g_pRegisteredChannelDataBase->remove(ch);
} else {
- if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
}
return true;
}
@@ -163,18 +167,21 @@ static bool regchan_kvs_cmd_setProperty(KviKvsModuleCommandCall * c)
KVSM_PARAMETER("value",KVS_PT_STRING,0,szValue)
KVSM_PARAMETERS_END(c)
KviRegisteredChannel * ch;
- if(c->hasSwitch('e',"exactly"))ch = g_pRegisteredChannelDataBase->findExact(szChan.toUtf8().data(),szNetwork.toUtf8().data());
- else ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ if(c->hasSwitch('e',"exactly"))
+ ch = g_pRegisteredChannelDataBase->findExact(szChan,szNetwork);
+ else
+ ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
if(ch)
{
if(!szValue.isEmpty())
{
- ch->setProperty(szProperty.toUtf8().data(),new KviStr(szValue));
+ ch->setProperty(szProperty,szValue);
} else {
- ch->removeProperty(szProperty.toUtf8().data());
+ ch->removeProperty(szProperty);
}
} else {
- if(!c->hasSwitch('q',"quiet")) c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
+ if(!c->hasSwitch('q',"quiet"))
+ c->warning(__tr2qs_ctx("No such channel/netmask entry in the database","register"));
}
return true;
}
@@ -198,19 +205,31 @@ static bool regchan_kvs_cmd_showlist(KviKvsModuleCommandCall * c)
int tot = 0;
- KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*(g_pRegisteredChannelDataBase->channelDict()));
- while(KviRegisteredChannelList * l = it.current())
+ QHash<QString,KviRegisteredChannelList *>::Iterator it;
+ for(it = g_pRegisteredChannelDataBase->channelDict()->begin();it != g_pRegisteredChannelDataBase->channelDict()->end();++it)
{
+ KviRegisteredChannelList * l = it.value();
+ KVI_ASSERT(l);
+
for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
{
tot++;
- c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs_ctx("Channel: %c%s@%s","register"),
- KVI_TEXT_BOLD,ch->name().ptr(),ch->netMask().ptr());
- KviPointerHashTableIterator<const char *,KviStr> pit(*(ch->propertyDict()));
- while(KviStr * s = pit.current())
+ c->window()->outputNoFmt(
+ KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs_ctx("Channel: %1%2@%3","register")
+ .arg(QChar(KVI_TEXT_BOLD))
+ .arg(ch->name())
+ .arg(ch->netMask())
+ );
+
+ for(QHash<QString,QString>::Iterator it2 = ch->propertyDict()->begin();it2 != ch->propertyDict()->end();++it2)
{
- c->window()->output(KVI_OUT_SYSTEMMESSAGE,__tr2qs_ctx(" Property: %s=%s","register"),pit.currentKey(),s->ptr());
- ++pit;
+ c->window()->outputNoFmt(
+ KVI_OUT_SYSTEMMESSAGE,
+ __tr2qs_ctx(" Property: %1=%2","register")
+ .arg(it2.key())
+ .arg(it2.value())
+ );
}
}
++it;
@@ -250,32 +269,29 @@ static bool regchan_kvs_fnc_list(KviKvsModuleFunctionCall * c)
KVSM_PARAMETERS_END(c)
KviKvsArray* pArray = new KviKvsArray();
-// KviKvsArray* pArrayCN = new KviKvsArray();
-// pArrayCN->set(0,new KviKvsVariant(QString("")));
-// pArrayCN->set(1,new KviKvsVariant(QString("")));
+
int aid=0;
- if(szChan.isEmpty())szChan="*";
- if(szNetmask.isEmpty())szNetmask="*";
+ if(szChan.isEmpty())
+ szChan="*";
+ if(szNetmask.isEmpty())
+ szNetmask="*";
- KviPointerHashTable<const char *,KviRegisteredChannelList> * d = g_pRegisteredChannelDataBase->channelDict();
- KviPointerHashTableIterator<const char *,KviRegisteredChannelList> it(*d);
- while(KviRegisteredChannelList * l = it.current())
+ QHash<QString,KviRegisteredChannelList *>::Iterator it;
+ for(it = g_pRegisteredChannelDataBase->channelDict()->begin();it != g_pRegisteredChannelDataBase->channelDict()->end();++it)
{
+ KviRegisteredChannelList * l = it.value();
+ KVI_ASSERT(l);
+
for(KviRegisteredChannel * ch = l->first();ch;ch = l->next())
- if(KviQString::matchWildExpressions(ch->name().ptr(),szChan) &&
- KviQString::matchWildExpressions(ch->netMask().ptr(),szNetmask))
{
-// FIXME: WE NEED TO RETURN AN ARRAY OF 2-ELEMENT ARRAYS (chan name, netmask)
- pArray->set(aid,new KviKvsVariant(QString(ch->name()+"@"+ch->netMask())));
-// pArray->set(aid,new KviKvsVariant(QString(ch->name()));
-// pArrayCN->set(0,new KviKvsVariant(QString(ch->name())));
-// pArrayCN->set(1,new KviKvsVariant(QString(ch->netMask())));
-// pArray->set(aid,new KviKvsVariant(pArrayCN));
- aid++;
+ if(KviQString::matchWildExpressions(ch->name(),szChan) && KviQString::matchWildExpressions(ch->netMask(),szNetmask))
+ {
+ pArray->set(aid,new KviKvsVariant(QString::fromUtf8("%1@%2").arg(ch->name(),ch->netMask())));
+ aid++;
+ }
}
- ++it;
}
c->returnValue()->setArray(pArray);
return true;
@@ -310,12 +326,13 @@ static bool regchan_kvs_fnc_property(KviKvsModuleFunctionCall * c)
KVSM_PARAMETER("network",KVS_PT_STRING,0,szNetwork)
KVSM_PARAMETER("property name",KVS_PT_NONEMPTYSTRING,0,szPropertyName)
KVSM_PARAMETERS_END(c)
- KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
if(ch)
{
- KviStr * p = ch->property(szPropertyName.toUtf8().data());
- if(p)c->returnValue()->setString(p->ptr());
- } //else c->warning(__tr("User %s not found"),parms->safeFirstParam());
+ QString szProp = ch->property(szPropertyName);
+ if(!szProp.isEmpty())
+ c->returnValue()->setString(szProp);
+ }
return true;
}
/*
@@ -348,7 +365,7 @@ static bool regchan_kvs_fnc_match(KviKvsModuleFunctionCall * c)
KVSM_PARAMETER("channel name",KVS_PT_STRING,0,szChan)
KVSM_PARAMETER("network",KVS_PT_STRING,0,szNetwork)
KVSM_PARAMETERS_END(c)
- KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetwork.toUtf8().data());
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetwork);
c->returnValue()->setBoolean(ch);
return true;
}
@@ -384,7 +401,7 @@ static bool regchan_kvs_fnc_find(KviKvsModuleFunctionCall * c)
KVSM_PARAMETER("channel name",KVS_PT_STRING,0,szChan)
KVSM_PARAMETER("netmask",KVS_PT_STRING,0,szNetmask)
KVSM_PARAMETERS_END(c)
- KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan.toUtf8().data(),szNetmask.toUtf8().data());
+ KviRegisteredChannel * ch = g_pRegisteredChannelDataBase->find(szChan,szNetmask);
c->returnValue()->setBoolean(ch);
return true;
}