#include "smanage.h" #include "widget.h" #include #include 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; } QString SManage::EncodetoEucKr(QString _str,bool _bExt) { QString strOut; for (int i = 0; i < _str.length(); i++) { QString strTran = _str.at(i); QByteArray byte = strTran.toLocal8Bit(); if (byte.length() == 2) { QByteArray byteHan = byte.toHex().toUpper(); for (int j = 0; j < 2 ; 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(); //m_pro[i].terminate(); } bQuit = UseProcess(); } } void SManage::clossProcess() { for(int i = 0; i < C_PROCESS_MAX; i++) { m_pro[i].close(); } }