bool TFileInfo::Actual(bool update)
 {
     if(update || m_actual == AD_UNDEFINED)
     {
         m_actual = (*this == TFileInfo(path.Original())) ? 1 : 0;
     }
     return m_actual > 0;
 }
void grepFile::grep(const QString &filename, QList<TFileInfo> &foundFiles, const QString &OrigFilename)
{
    QFileInfo fileInfo(filename);

    if(fileInfo.isDir())
    {
        return;
    }

    QFile file(filename);
    //
    if(!this->m_deepSearch)
    {
        if (file.open(QIODevice::ReadOnly))
        {
            //设置文件流并设置编码
            QTextStream in(&file);
            //行号
            int nLine=0;
            //读文件
            while (!in.atEnd())
            {
                QString line = in.readLine();
                nLine++;

                if (line.contains( m_contentExp, m_sensitive))
                {
                    if(line.size()>80)
                    {
                        line.resize(80);
                    }
                    foundFiles << TFileInfo( OrigFilename, nLine, line);
                }
            }
            file.close();
        }
        return;
    }

    QList<int> nList;
    for (int i=0;i<expCodecList.size(); i++)
    {
        if (file.open(QIODevice::ReadOnly))
        {
            QString exp = expCodecList.at(i).exp;
            QTextCodec *codec = expCodecList.at(i).codec;

            //设置文件流并设置编码
            QTextStream in(&file);
            in.setAutoDetectUnicode(false);
            in.setCodec(codec);
            //行号
            int nLine=0;
            //读文件
            while (!in.atEnd())
            {
                QString line = in.readLine();
                nLine++;

                if (line.contains( exp, m_sensitive))
                {
                    if(nList.contains(nLine))
                    {
                        continue;
                    }
                    nList.append(nLine);

                    QString tline;
                    ConvTextCodec( line, codec, tline, QTextCodec::codecForName("gb18030"));
                    if(tline.size()>80)
                    {
                        tline.resize(80);
                    }
                    //foundFiles << TFileInfo( fileInfo.fileName(), nLine, "["+codec->name()+"]\t"+tline);
                    foundFiles << TFileInfo( OrigFilename, nLine, "["+codec->name()+"]\t"+tline);
                }
            }
            file.close();
        }
    }

}