Files
clients/CrawlerList/smanage.cpp
admin dc37b20426 버그 수정 및 Page 갯수 설정
git-svn-id: svn://192.168.0.12/source@127 8346c931-da38-4b9b-9d4c-e48b93cbd075
2015-05-28 07:07:14 +00:00

125 lines
3.1 KiB
C++

#include "smanage.h"
#include "widget.h"
#include <QDebug>
#include <QThread>
SManage::SManage(QObject *parent) :
QObject(parent),m_pMain(0)
{
for(int i = 0; i < C_PROCESS_MAX ;i++)
connect(&m_pro[i],SIGNAL(finished(int,QProcess::ExitStatus)),SLOT(processFinished(int,QProcess::ExitStatus)));
}
SManage::~SManage()
{
m_pMain = 0;
}
void SManage::Start(QDate _StartDate,QDate _EndDate,QString _strKeyword,QString _strAuthorship,QString _strKeywordID,QString _strGroupID,int _nStart,int _nUntilPage)
{
m_date = _StartDate;
m_dateEnd = _EndDate;
m_strKeyword = _strKeyword;
m_bFinalLast = false;
m_strKeywordID = _strKeywordID;
m_strAuthorship = _strAuthorship;
m_ncList = _nStart;
m_strGroupID = _strGroupID;
m_nUntilPage = _nUntilPage;
Start();
}
void SManage::SetParent(Widget *_pWidget)
{
m_pMain = _pWidget;
}
QString SManage::EncodetoUtf8(QString _str,bool _bExt)
{
QString strOut;
for (int i = 0; i < _str.length(); i++)
{
QString strTran = _str.at(i);
QByteArray byte = strTran.toUtf8();
if (byte.length() == 3)
{
QByteArray byteHan = byte.toHex().toUpper();
for (int j = 0; j < 3 ; j++)
{
strOut += "%";
for (int k = 0; k < 2; k++)
strOut += byteHan.at(j*2+k);
}
}
else if (_str.at(i).isDigit() || _str.at(i).isLower() || _str.at(i).isUpper())
strOut += _str.at(i);
else if (_bExt && _str.at(i) == '@' || _str.at(i) == '*' || _str.at(i) == '_' || _str.at(i) == '.')
strOut += _str.at(i);
else if (_bExt && _str.at(i) == ' ')
strOut += '+';
else
{
strOut += "%";
strOut += byte.toHex().toUpper();
}
}
return strOut;
}
bool SManage::UseProcess()
{
for(int i = 0; i < C_PROCESS_MAX ; i++)
{
if (m_pro[i].state() == QProcess::Running)
return true;
}
return false;
}
void SManage::processFinished(int exitCode,QProcess::ExitStatus exitStatus)
{
QProcess *pPro = (QProcess*)sender();
QThread::msleep(100);
QString str = pPro->readAllStandardOutput();
QStringList list = str.split("\n");
foreach(QString log,list)
{
if (m_pMain)
{
m_pMain->InsertLog(log);
}
else
exit(0);
}
processFinished(pPro,str);
pPro->kill();
}
void SManage::CheckLast()
{
if (m_bLast)
{
m_date = m_date.addDays(1);
if (m_date > m_dateEnd)
{
m_bFinalLast = true;
m_pMain->InsertLog("Finish Crawling :)");
m_pMain->SetCrawlingState("Finish");
}
m_ncList=1;
}
}
void SManage::WaitExitProcess()
{
bool bQuit = true;
while(bQuit)
{
for(int i = 0; i < C_PROCESS_MAX ; i++)
{
if (m_pro[i].state() == QProcess::Running)
m_pro[i].kill();
}
bQuit = UseProcess();
}
}