Source Code (Use browser search to find items of interest.)

Class Index

krn'Rule (./kdenetwork/krn/rules.h:11)

class Rule
{
public:
    enum Field {Sender,Subject,Header,Body,All,Header2,Body2,All2};
    Rule(const char *name=0,const char *expr=0,Field field=Sender,
        bool casesen=false,bool wildmode=false,int value=0);
    Rule(const char *name=0,const char *expr=0,const char *field=0,
         bool casesen=false,bool wildmode=false,int value=0);
    ~Rule();
    static void updateGlobals();

    void load(const char *name);
    void save(const char *name);
    bool match (const Article art,NNTP *server=0);
    int missingParts();
    QRegExp regex;
    Field field;
    QString name;
    int value;
};


krn'Rule::Rule() (./kdenetwork/krn/rules.cpp:11)

Rule::Rule(const char *_name,const char *expr,Field _field,
           bool casesen,bool wildmode,int _value)
{
    regex=QRegExp(expr,casesen,wildmode);
    name=_name;
    field=_field;
    value=_value;
}


krn'Rule::Rule() (./kdenetwork/krn/rules.cpp:20)

Rule::Rule(const char *_name,const char *expr,const char *_field,
           bool casesen,bool wildmode,int _value)
{
    regex=QRegExp(expr,casesen,wildmode);
    name=_name;
    if (!strcmp(_field,"Sender"))
        field=Sender;
    else if (!strcmp(_field,"Subject"))
        field=Subject;
    else if (!strcmp(_field,"Cached Header"))
        field=Header;
    else if (!strcmp(_field,"Header"))
        field=Header2;
    else if (!strcmp(_field,"Cached Body"))
        field=Body;
    else if (!strcmp(_field,"Body"))
        field=Body2;
    else if (!strcmp(_field,"Cached Article"))
        field=All;
    else if (!strcmp(_field,"Article"))
        field=All2;
    value=_value;
}


krn'Rule::~Rule() (./kdenetwork/krn/rules.cpp:44)

Rule::~Rule()
{
}



krn'Rule::missingParts() (./kdenetwork/krn/rules.cpp:49)

int Rule::missingParts()
{
    int parts=PART_NONE;

    if (field==Header2)
        parts=parts|PART_HEAD;
    else if (field==Body2)
        parts=parts|PART_BODY;
    else if (field==All2)
        parts=parts|PART_ALL;
    return parts;
}



krn'Rule::match() (./kdenetwork/krn/rules.cpp:63)

bool Rule::match(const Article art,NNTP *server)
{
    bool matches=false;
    if (server)
        server->getMissingParts((MessageParts)missingParts(),art.ID);
    
    if (field==Subject)
    {
        if (regex.match(art.Subject.data())>-1)
        {
            matches=true;
        }
    }
    else if (field==Sender)
    {
        if (regex.match(art.From.data())>-1)
        {
            matches=true;
        }
    }

    if (!server)
        return matches;
    
    else if ((field==Header && (server->isCached(art.ID)&PART_HEAD)) ||
            (field==Header2))
    {
        QString *data=server->head(art.ID);
        if (regex.match(data->data())>-1)
        {
            matches=true;
        }
    }

    else if ((field==Body && (server->isCached(art.ID)&PART_BODY)) ||
            (field==Body2))
    {
        QString *data=server->body(art.ID);
        if (regex.match(data->data())>-1)
        {
            matches=true;
        }
    }

    else if ((field==All && (server->isCached(art.ID)&PART_ALL)) ||
            (field==All2))
    {
        QString *data=server->article(art.ID);
        if (regex.match(data->data())>-1)
        {
            matches=true;
        }
    }
    
    return matches;
}


krn'Rule::load() (./kdenetwork/krn/rules.cpp:120)

void Rule::load(const char *name)
{
    ruleFile->setGroup(name);
    regex=QRegExp(ruleFile->readEntry("Regexp",""),
                  ruleFile->readNumEntry("CaseSensitive",false),
                  ruleFile->readNumEntry("WildCard",false));
    value=ruleFile->readNumEntry("Value",0);
    field=(Rule::Field)(ruleFile->readNumEntry("Field",0));
}

krn'Rule::save() (./kdenetwork/krn/rules.cpp:129)

void Rule::save(const char *name)
{
    ruleFile->setGroup("Index");
    QStrList names;
    ruleFile->readListEntry("RuleNames",names);
    if (names.find(name)==-1)
    {
        names.append(name);
        ruleFile->writeEntry("RuleNames",names);
    }
    ruleFile->setGroup(name);
    ruleFile->writeEntry("Name",name);
    ruleFile->writeEntry("Regexp",regex.pattern());
    ruleFile->writeEntry("Field",field);
    ruleFile->writeEntry("WildCard",regex.wildcard());
    ruleFile->writeEntry("CaseSensitive",regex.caseSensitive());
    ruleFile->writeEntry("Value",value);
    ruleFile->sync();
}


krn'Rule::updateGlobals() (./kdenetwork/krn/rules.cpp:149)

void Rule::updateGlobals()
{
    ruleList.clear();
    ruleFile->setGroup("Index");
    QStrList names;
    ruleFile->readListEntry("GlobalRules",names);
    for (char *iter=names.first();iter!=0;iter=names.next())
    {
        Rule *r=new Rule(0,0,Rule::Sender,false,false);
        r->load(iter);
        ruleList.append(r);
    }
}