diff options
| author | 2007-02-19 22:23:09 +0000 | |
|---|---|---|
| committer | 2007-02-19 22:23:09 +0000 | |
| commit | 9b8d85cf054866710426519d9c90d1e4576796c8 (patch) | |
| tree | 0f848f1bb1d3e331f37339f000d036c80dc38734 /src/modules | |
| parent | fixed temporarry nick storing on reconnect (diff) | |
| download | KVIrc-9b8d85cf054866710426519d9c90d1e4576796c8.tar.gz KVIrc-9b8d85cf054866710426519d9c90d1e4576796c8.tar.bz2 KVIrc-9b8d85cf054866710426519d9c90d1e4576796c8.zip | |
Completely reworked ignore system; Implemented reguser match caching; Implemented custom color for registered user caching
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@348 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
| -rw-r--r-- | src/modules/reguser/edituser.cpp | 100 | ||||
| -rw-r--r-- | src/modules/reguser/edituser.h | 2 | ||||
| -rw-r--r-- | src/modules/reguser/libkvireguser.cpp | 242 |
3 files changed, 273 insertions, 71 deletions
diff --git a/src/modules/reguser/edituser.cpp b/src/modules/reguser/edituser.cpp index e1101c58c..8b500f49f 100644 --- a/src/modules/reguser/edituser.cpp +++ b/src/modules/reguser/edituser.cpp @@ -419,6 +419,7 @@ KviRegisteredUserEntryDialog::KviRegisteredUserEntryDialog(QWidget *p,KviRegiste g->addMultiCellWidget(f,4,4,0,2); m_pCustomColorCheck = new KviStyledCheckBox(__tr2qs("Use custom color in userlist"),p2); + m_pCustomColorCheck->setChecked(r->getBoolProperty("useCustomColor")); g->addMultiCellWidget(m_pCustomColorCheck,5,5,0,1); m_pCustomColorSelector = new KviColorSelector(p2,QString::null,m_pCustomColor,1); @@ -434,47 +435,30 @@ KviRegisteredUserEntryDialog::KviRegisteredUserEntryDialog(QWidget *p,KviRegiste addTab(p2,__tr2qs("Properties")); // Ignore TAB - QWidget * p3 = new QWidget(this); + QVBox * vb = new QVBox(this); + vb->setMargin(10); - g = new QGridLayout(p3,9,2,5,2); + m_pIgnoreEnabled = new KviStyledCheckBox(__tr2qs("Enable ignore for this user"),vb); - m_pIgnoreEnabled = new KviStyledCheckBox(__tr2qs("Enable ignore for this user"),p3); - g->addMultiCellWidget(m_pIgnoreEnabled,0,0,0,1); - - m_pIgnoreSilent = new KviStyledCheckBox(__tr2qs("Hide ignore-messages (incomplete)"),p3); - m_pIgnoreSilent->setEnabled(FALSE); - g->addMultiCellWidget(m_pIgnoreSilent,1,1,0,1); - connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreSilent,SLOT(setEnabled(bool))); - - m_pIgnoreAll = new KviStyledCheckBox(__tr2qs("Ignore everything"),p3); - g->addMultiCellWidget(m_pIgnoreAll,2,2,0,1); - connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreAll,SLOT(setEnabled(bool))); - - m_pIgnoreQuery = new KviStyledCheckBox(__tr2qs("Ignore query-messages"),p3); - g->addMultiCellWidget(m_pIgnoreQuery,3,3,1,1); + m_pIgnoreQuery = new KviStyledCheckBox(__tr2qs("Ignore query-messages"),vb); connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreQuery,SLOT(setEnabled(bool))); - m_pIgnoreChannel = new KviStyledCheckBox(__tr2qs("Ignore channel-messages"),p3); - g->addMultiCellWidget(m_pIgnoreChannel,4,4,1,1); + m_pIgnoreChannel = new KviStyledCheckBox(__tr2qs("Ignore channel-messages"),vb); connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreChannel,SLOT(setEnabled(bool))); - m_pIgnoreNotice = new KviStyledCheckBox(__tr2qs("Ignore notice-messages"),p3); - g->addMultiCellWidget(m_pIgnoreNotice,5,5,1,1); + m_pIgnoreNotice = new KviStyledCheckBox(__tr2qs("Ignore notice-messages"),vb); connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreNotice,SLOT(setEnabled(bool))); - m_pIgnoreCtcp = new KviStyledCheckBox(__tr2qs("Ignore ctcp-messages"),p3); - g->addMultiCellWidget(m_pIgnoreCtcp,6,6,1,1); + m_pIgnoreCtcp = new KviStyledCheckBox(__tr2qs("Ignore ctcp-messages"),vb); connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreCtcp,SLOT(setEnabled(bool))); - m_pIgnoreInvite = new KviStyledCheckBox(__tr2qs("Ignore invites"),p3); - g->addMultiCellWidget(m_pIgnoreInvite,7,7,1,1); + m_pIgnoreInvite = new KviStyledCheckBox(__tr2qs("Ignore invites"),vb); connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreInvite,SLOT(setEnabled(bool))); - m_pIgnoreDcc = new KviStyledCheckBox(__tr2qs("Ignore DCCs"),p3); - g->addMultiCellWidget(m_pIgnoreDcc,8,8,1,1); + m_pIgnoreDcc = new KviStyledCheckBox(__tr2qs("Ignore DCCs"),vb); connect(m_pIgnoreEnabled,SIGNAL(toggled(bool)),m_pIgnoreDcc,SLOT(setEnabled(bool))); - addTab(p3,__tr2qs("Ignore")); + addTab(vb,__tr2qs("Ignore")); setCancelButton(__tr2qs("Cancel")); setOkButton(__tr2qs("&OK")); @@ -503,11 +487,6 @@ KviRegisteredUserEntryDialog::KviRegisteredUserEntryDialog(QWidget *p,KviRegiste m_pNotifyNick->setEnabled(true); } - if( r->getBoolProperty("useCustomColor")) - { - m_pCustomColorCheck->setChecked(1); - } - if(r->propertyDict()) { KviDictIterator<QString> it(*(r->propertyDict())); @@ -518,19 +497,13 @@ KviRegisteredUserEntryDialog::KviRegisteredUserEntryDialog(QWidget *p,KviRegiste } } - m_pIgnoreEnabled->setChecked(r->getBoolProperty("IgnoreEnabled")); -/* if(r->propertyDict()->find("IgnoreSilent")) { - m_pIgnoreSilent->setChecked(r->getBoolProperty("IgnoreSilent")); - } else { - m_pIgnoreSilent->setState(QButton::NoChange); - }*/ - m_pIgnoreAll->setChecked(r->getBoolProperty("IgnoreAll")); - m_pIgnoreQuery->setChecked(r->getBoolProperty("IgnoreQuery")); - m_pIgnoreChannel->setChecked(r->getBoolProperty("IgnoreChannel")); - m_pIgnoreNotice->setChecked(r->getBoolProperty("IgnoreNotice")); - m_pIgnoreCtcp->setChecked(r->getBoolProperty("IgnoreCtcp")); - m_pIgnoreInvite->setChecked(r->getBoolProperty("IgnoreInvite")); - m_pIgnoreDcc->setChecked(r->getBoolProperty("IgnoreDcc")); + m_pIgnoreEnabled->setChecked(r->ignoreEnagled()); + m_pIgnoreQuery->setChecked(r->ignoreFlags() & KviRegisteredUser::Query); + m_pIgnoreChannel->setChecked(r->ignoreFlags() & KviRegisteredUser::Channel); + m_pIgnoreNotice->setChecked(r->ignoreFlags() & KviRegisteredUser::Notice); + m_pIgnoreCtcp->setChecked(r->ignoreFlags() & KviRegisteredUser::Ctcp); + m_pIgnoreInvite->setChecked(r->ignoreFlags() & KviRegisteredUser::Invite); + m_pIgnoreDcc->setChecked(r->ignoreFlags() & KviRegisteredUser::Dcc); } } @@ -636,34 +609,29 @@ void KviRegisteredUserEntryDialog::okClicked() ++it; } - if(m_pCustomColorCheck->isChecked()) - { - u->setProperty("useCustomColor","1"); - } else { - u->setProperty("useCustomColor","0"); - } + u->setProperty("useCustomColor",m_pCustomColorCheck->isChecked()); QString col; KviStringConversion::toString(m_pCustomColorSelector->getColor(),col); -// debug(col); u->setProperty("customColor",col); - if(m_pIgnoreSilent->state()==QButton::NoChange) - { - u->propertyDict()->remove("IgnoreSilent"); - } else { - u->setProperty("IgnoreSilent",m_pIgnoreSilent->isOn()); - } - - u->setProperty("IgnoreEnabled",m_pIgnoreEnabled->isChecked()); - u->setProperty("IgnoreQuery",m_pIgnoreQuery->isChecked()); - u->setProperty("IgnoreChannel",m_pIgnoreChannel->isChecked()); - u->setProperty("IgnoreNotice",m_pIgnoreNotice->isChecked()); - u->setProperty("IgnoreCtcp",m_pIgnoreCtcp->isChecked()); - u->setProperty("IgnoreInvite",m_pIgnoreInvite->isChecked()); - u->setProperty("IgnoreDcc",m_pIgnoreDcc->isChecked()); + int iIgnoreFlags=0; + u->setIgnoreEnabled(m_pIgnoreEnabled->isChecked()); + if(m_pIgnoreQuery->isChecked()) + iIgnoreFlags |= KviRegisteredUser::Query; + if(m_pIgnoreChannel->isChecked()) + iIgnoreFlags |= KviRegisteredUser::Channel; + if(m_pIgnoreNotice->isChecked()) + iIgnoreFlags |= KviRegisteredUser::Notice; + if(m_pIgnoreCtcp->isChecked()) + iIgnoreFlags |= KviRegisteredUser::Ctcp; + if(m_pIgnoreInvite->isChecked()) + iIgnoreFlags |= KviRegisteredUser::Invite; + if(m_pIgnoreDcc->isChecked()) + iIgnoreFlags |= KviRegisteredUser::Dcc; + u->setIgnoreFlags(iIgnoreFlags); accept(); g_pApp->optionResetUpdate(KviOption_resetUpdateGui); } diff --git a/src/modules/reguser/edituser.h b/src/modules/reguser/edituser.h index 9bf37c8ab..34d99fce1 100644 --- a/src/modules/reguser/edituser.h +++ b/src/modules/reguser/edituser.h @@ -165,14 +165,12 @@ protected: //Ignore TAB QCheckBox * m_pIgnoreEnabled; - QCheckBox * m_pIgnoreSilent; QCheckBox * m_pIgnoreQuery; QCheckBox * m_pIgnoreChannel; QCheckBox * m_pIgnoreNotice; QCheckBox * m_pIgnoreCtcp; QCheckBox * m_pIgnoreInvite; QCheckBox * m_pIgnoreDcc; - QCheckBox * m_pIgnoreAll; virtual void closeEvent(QCloseEvent *); protected slots: diff --git a/src/modules/reguser/libkvireguser.cpp b/src/modules/reguser/libkvireguser.cpp index b6bb31ca4..57851879c 100644 --- a/src/modules/reguser/libkvireguser.cpp +++ b/src/modules/reguser/libkvireguser.cpp @@ -25,7 +25,7 @@ #include "kvi_module.h" #include "kvi_regusersdb.h" - +#include "kvi_ircuserdb.h" #include "kvi_out.h" #include "kvi_mirccntrl.h" #include "kvi_window.h" @@ -36,6 +36,7 @@ #include "edituser.h" #include "wizard.h" +#include "kvi_ircconnection.h" #include "kvi_list.h" #include <qsplitter.h> // FIXME: REmove this! @@ -411,6 +412,237 @@ static bool reguser_kvs_cmd_delmask(KviKvsModuleCommandCall * c) } /* + @doc: reguser.setIgnoreEnabled + @type: + command + @title: + reguser.setIgnoreEnabled + @keyterms: + enable/disable ignoring of this user + @short: + Enable/disable ignoring of this user + @syntax: + reguser.setIgnoreEnabled [-q] <name:string> <isEnabled:bool> + @description: + + @examples: + [example] + reguser.setproperty "Alexey" $true + [/example] + @seealso: + [module:reguser]Registered users database interface[/module], + [doc:registered_users]Registered users database[/doc], + [fnc]$reguser.matchProperty[/fnc], + [fnc]$reguser.property[/fnc] +*/ + +static bool reguser_kvs_cmd_setIgnoreEnabled(KviKvsModuleCommandCall * c) +{ + QString szName; + bool bEnabled; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("name",KVS_PT_STRING,0,szName) + KVSM_PARAMETER("isEnabled",KVS_PT_BOOL,0,bEnabled) + KVSM_PARAMETERS_END(c) + + if(szName.isEmpty()) + { + if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No name specified")); + return true; + } + + KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName); + if(!u) + { + if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("User %Q not found"),&szName); + } else { + u->setIgnoreEnabled(bEnabled); + } + return true; +} + + +/* + @doc: reguser.setIgnoreFlags + @type: + command + @title: + reguser.setIgnoreFlags + @keyterms: + Sets ignore flags for registered user + @short: + Sets ignore flags for registered user + @syntax: + reguser.setIgnoreFlags [-p|--query] [-c|--channel] [-n|--notice] [-t|--ctcp] [-i|--invite] [-d|--dcc] [-q] <name:string> + @switches: + !sw: -q | --quiet + Don't warn if the specified user doesn't exist. Just continue silently. + !sw: -p | --query + Sets ignore for query messages and actions + !sw: -c | --channel + Sets ignore for channel messages and actions + !sw: -n | --notice + Sets ignore for notices + !sw: -t | --ctcp + Sets ignore for CTCP's + !sw: -i | --invite + Sets ignore for invites + !sw: -d | --dcc + Sets ignore for DCC's + + @description: + Sets ignore flags for registered user + @examples: + [example] + reguser.setproperty "Alexey" $true + [/example] + @seealso: + [module:reguser]Registered users database interface[/module], + [doc:registered_users]Registered users database[/doc], + [fnc]$reguser.matchProperty[/fnc], + [fnc]$reguser.property[/fnc] +*/ + +static bool reguser_kvs_cmd_setIgnoreFlags(KviKvsModuleCommandCall * c) +{ + QString szName; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("name",KVS_PT_STRING,0,szName) + KVSM_PARAMETERS_END(c) + + if(szName.isEmpty()) + { + if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("No name specified")); + return true; + } + + KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName); + if(!u) + { + if(!c->hasSwitch('q',"quiet"))c->warning(__tr2qs("User %Q not found"),&szName); + } else { + int iIgnoreFlags=0; + if(c->hasSwitch('p',"query")) + iIgnoreFlags |= KviRegisteredUser::Query; + if(c->hasSwitch('c',"channel")) + iIgnoreFlags |= KviRegisteredUser::Channel; + if(c->hasSwitch('n',"notice")) + iIgnoreFlags |= KviRegisteredUser::Notice; + if(c->hasSwitch('t',"ctcp")) + iIgnoreFlags |= KviRegisteredUser::Ctcp; + if(c->hasSwitch('i',"invite")) + iIgnoreFlags |= KviRegisteredUser::Invite; + if(c->hasSwitch('d',"dcc")) + iIgnoreFlags |= KviRegisteredUser::Dcc; + + } + return true; +} + +/* + @doc: reguser.getIgnoreFlags + @type: + function + @title: + $reguser.getIgnoreFlags + @short: + Returns ignore flags for registered user + @syntax: + $reguser.getIgnoreFlags(<name:string>) + @description: + Returns the ignore flags for registered user. Flags are string of letters:[br] + p - query ignore[br] + c - channel ignore[br] + t - ctcp ignore[br] + n - notice ignore[br] + d - dcc ignore[br] + i - invite ignore[br] + @seealso: + [module:reguser]Registered users database interface[/module], + [doc:registered_users]Registered users database[/doc], + [cmd]reguser.add[cmd], + [cmd]reguser.remove[/cmd], + [cmd]reguser.addmask[/cmd], + [cmd]reguser.delmask[/cmd], + [fnc]$reguser.list[/fnc], + [fnc]reguser.match[/fnc], + [fnc]$reguser.matchProperty[/fnc] +*/ + +static bool reguser_kvs_fnc_getIgnoreFlags(KviKvsModuleFunctionCall * c) +{ + QString szName; + QString szFlags; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("name",KVS_PT_STRING,0,szName) + KVSM_PARAMETERS_END(c) + + KviKvsArray* pArray = new KviKvsArray(); + int aid=0; + KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName); + if(u) + { + if(u->ignoreFlags() & KviRegisteredUser::Query) + szFlags+='q'; + if(u->ignoreFlags() & KviRegisteredUser::Channel) + szFlags+='c'; + if(u->ignoreFlags() & KviRegisteredUser::Notice) + szFlags+='n'; + if(u->ignoreFlags() & KviRegisteredUser::Ctcp) + szFlags+='t'; + if(u->ignoreFlags() & KviRegisteredUser::Invite) + szFlags+='i'; + if(u->ignoreFlags() & KviRegisteredUser::Dcc) + szFlags+='d'; + c->returnValue()->setString(szFlags); + + } + return true; +} + +/* + @doc: reguser.isIgnoreEnabled + @type: + function + @title: + $reguser.isIgnoreEnabled + @short: + Returns if ignore enabled registered user + @syntax: + $reguser.isIgnoreEnabled(<name:string>) + @description: + Returns if ignore enabled registered user + @seealso: + [module:reguser]Registered users database interface[/module], + [doc:registered_users]Registered users database[/doc], + [cmd]reguser.add[cmd], + [cmd]reguser.remove[/cmd], + [cmd]reguser.addmask[/cmd], + [cmd]reguser.delmask[/cmd], + [fnc]$reguser.list[/fnc], + [fnc]reguser.match[/fnc], + [fnc]$reguser.matchProperty[/fnc] +*/ + +static bool reguser_kvs_fnc_isIgnoreEnabled(KviKvsModuleFunctionCall * c) +{ + QString szName; + KVSM_PARAMETERS_BEGIN(c) + KVSM_PARAMETER("name",KVS_PT_STRING,0,szName) + KVSM_PARAMETERS_END(c) + + KviKvsArray* pArray = new KviKvsArray(); + int aid=0; + KviRegisteredUser * u = g_pRegisteredUserDataBase->findUserByName(szName); + if(u) + { + c->returnValue()->setBoolean(u->ignoreEnagled()); + + } + return true; +} + +/* @doc: reguser.setproperty @type: command @@ -647,7 +879,7 @@ static bool reguser_kvs_fnc_match(KviKvsModuleFunctionCall * c) KVSM_PARAMETER("user_mask",KVS_PT_STRING,0,szMask) KVSM_PARAMETERS_END(c) KviIrcMask mask(szMask); - KviRegisteredUser * u = g_pRegisteredUserDataBase->findMatchingUser(mask.nick(),mask.user(),mask.host()); + KviRegisteredUser * u = c->context()->connection()->userDataBase()->registeredUser(mask.nick(),mask.user(),mask.host()); if(u) c->returnValue()->setString(u->name()); return true; } @@ -901,7 +1133,7 @@ static bool reguser_kvs_fnc_matchProperty(KviKvsModuleFunctionCall * c) KVSM_PARAMETERS_END(c) KviIrcMask mask(szName); - KviRegisteredUser * u = g_pRegisteredUserDataBase->findMatchingUser(mask.nick(),mask.user(),mask.host()); + KviRegisteredUser * u = c->context()->connection()->userDataBase()->registeredUser(mask.nick(),mask.user(),mask.host()); if(u) { QString tmp; @@ -957,6 +1189,8 @@ static bool reguser_module_init(KviModule * m) KVSM_REGISTER_SIMPLE_COMMAND(m,"showlist",reguser_kvs_cmd_showlist); KVSM_REGISTER_SIMPLE_COMMAND(m,"setproperty",reguser_kvs_cmd_setproperty); KVSM_REGISTER_SIMPLE_COMMAND(m,"wizard",reguser_kvs_cmd_wizard); + KVSM_REGISTER_SIMPLE_COMMAND(m,"setIgnoreEnabled",reguser_kvs_cmd_setIgnoreEnabled); + KVSM_REGISTER_SIMPLE_COMMAND(m,"setIgnoreFlags",reguser_kvs_cmd_setIgnoreFlags); KVSM_REGISTER_FUNCTION(m,"match",reguser_kvs_fnc_match); KVSM_REGISTER_FUNCTION(m,"list",reguser_kvs_fnc_list); @@ -964,6 +1198,8 @@ static bool reguser_module_init(KviModule * m) KVSM_REGISTER_FUNCTION(m,"mask",reguser_kvs_fnc_mask); KVSM_REGISTER_FUNCTION(m,"property",reguser_kvs_fnc_property); KVSM_REGISTER_FUNCTION(m,"matchProperty",reguser_kvs_fnc_matchProperty); + KVSM_REGISTER_FUNCTION(m,"getIgnoreFlags",reguser_kvs_fnc_getIgnoreFlags); + KVSM_REGISTER_FUNCTION(m,"isIgnoreEnabled",reguser_kvs_fnc_isIgnoreEnabled); return true; } |
