logic 추가 -_-;;

git-svn-id: svn://192.168.0.12/source@303 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2016-10-21 10:01:30 +00:00
parent 23021133c6
commit 7a3cbaa797
2 changed files with 315 additions and 0 deletions

262
EffectUI/seffectlogic.cpp Normal file
View File

@@ -0,0 +1,262 @@
#include "seffectlogic.h"
#include "sadddelwidget.h"
#include "srunninglistwidget.h"
#include "srunningprocess.h"
#include "slogwidget.h"
#include "stimer.h"
#include <QDebug>
namespace
{
const int RETRY = 2;
}
SEffectLogic::SEffectLogic(): m_pSAddDelWidget(nullptr), m_pSRunningProcess(nullptr),
m_pSTimer(nullptr), m_pSRunningListWidget(nullptr), m_pSLogWidget(nullptr), nRetry(RETRY)
{
}
void SEffectLogic::setSRunningProcess(SRunningProcess *_p)
{
m_pSRunningProcess = _p;
}
void SEffectLogic::setSRunningWidget(SRunningListWidget *_p)
{
m_pSRunningListWidget = _p;
}
void SEffectLogic::setSTimer(STimer *_p)
{
m_pSTimer = _p;
}
void SEffectLogic::setSLogWidget(SLogWidget *_p)
{
m_pSLogWidget = _p;
}
void SEffectLogic::setSAddDelWidget(SAddDelWidget *_p)
{
m_pSAddDelWidget = _p;
}
void SEffectLogic::initConnect()
{
QObject::connect(m_pSRunningProcess, &SRunningProcess::signalLog,
m_pSLogWidget, &SLogWidget::slotWriteLog);
QObject::connect(m_pSTimer, &STimer::timeout, this, &SEffectLogic::slotStartByTimer);
QObject::connect(m_pSRunningListWidget, &SRunningListWidget::signalTimerStart,
this, &SEffectLogic::slotClickTimerStart);
QObject::connect(m_pSRunningListWidget, &SRunningListWidget::signalTimerStop,
this, &SEffectLogic::slotClickTimerStop);
QObject::connect(m_pSRunningListWidget, &SRunningListWidget::signalForceStart,
this, &SEffectLogic::slotClickForceStart);
QObject::connect(m_pSRunningListWidget, &SRunningListWidget::signalForceStop,
this, &SEffectLogic::slotClickForceStop);
QObject::connect(m_pSRunningProcess, &SRunningProcess::signalUserAbort,
this, &SEffectLogic::slotUserAbort);
QObject::connect(m_pSRunningProcess, &SRunningProcess::signalTerminateError,
this, &SEffectLogic::slotTerminateError);
QObject::connect(m_pSRunningProcess, &SRunningProcess::signalTerminateNormal,
this, &SEffectLogic::slotTerminateNormal);
QObject::connect(m_pSRunningProcess, &SRunningProcess::signalSuccessErrorCompany,
this, &SEffectLogic::slotSuccessErrorCompany);
QObject::connect(m_pSRunningProcess, &SRunningProcess::signalCompanyComplete,
this, &SEffectLogic::slotCompleteCompany);
QObject::connect(m_pSRunningProcess, &SRunningProcess::signalCompanyOutDated,
this, &SEffectLogic::slotCompanyOutdated);
}
void SEffectLogic::slotClickForceStart()
{
if (!(m_pSRunningProcess->isRunning()) && !(m_pSTimer->isActive()))
{
nRetry = RETRY;
m_pSRunningListWidget->enableBtnForceStart(false);
m_pSRunningListWidget->enableBtnForceStop(true);
m_pSRunningListWidget->enableBtnTimerStart(false);
m_pSRunningListWidget->enableBtnTimerStop(false);
m_pSAddDelWidget->enableBtnAdd(false);
m_pSAddDelWidget->enableBtnDel(false);
QVector<int> allList = m_pSRunningListWidget->getAllList();
foreach (auto i, allList)
m_pSRunningListWidget->setWaiting(i);
m_pSRunningProcess->setList(allList);
m_pSRunningProcess->start();
}
}
void SEffectLogic::slotClickForceStop()
{
if (m_pSTimer->isActive())
m_pSTimer->stop();
if (m_pSRunningProcess->isRunning())
{
m_pSLogWidget->writeLog("Stopping Process");
m_pSRunningProcess->stop();
}
else
{
m_pSAddDelWidget->enableBtnAdd(true);
m_pSAddDelWidget->enableBtnDel(true);
m_pSRunningListWidget->enableBtnForceStart(true);
m_pSRunningListWidget->enableBtnForceStop(false);
m_pSRunningListWidget->enableBtnTimerStart(true);
m_pSRunningListWidget->enableBtnTimerStop(false);
}
}
void SEffectLogic::slotClickTimerStart()
{
if (!m_pSRunningProcess->isRunning() && !m_pSTimer->isActive())
{
m_pSRunningListWidget->enableBtnForceStart(false);
m_pSRunningListWidget->enableBtnForceStop(false);
m_pSRunningListWidget->enableBtnTimerStart(false);
m_pSRunningListWidget->enableBtnTimerStop(true);
m_pSTimer->start();
}
}
void SEffectLogic::slotClickTimerStop()
{
if (m_pSTimer->isActive())
{
m_pSLogWidget->writeLog("Stopping Process");
m_pSTimer->stop();
if (m_pSRunningProcess->isRunning())
{
m_pSRunningProcess->stop();
}
else
{
m_pSAddDelWidget->enableBtnAdd(true);
m_pSAddDelWidget->enableBtnDel(true);
m_pSRunningListWidget->enableBtnForceStart(true);
m_pSRunningListWidget->enableBtnForceStop(false);
m_pSRunningListWidget->enableBtnTimerStart(true);
m_pSRunningListWidget->enableBtnTimerStop(false);
}
}
}
void SEffectLogic::slotStartByTimer()
{
if (!m_pSRunningProcess->isRunning())
{
nRetry = RETRY;
m_pSAddDelWidget->enableBtnAdd(false);
m_pSAddDelWidget->enableBtnDel(false);
QVector<int> allList = m_pSRunningListWidget->getAllList();
foreach (auto i, allList)
m_pSRunningListWidget->setWaiting(i);
m_pSRunningProcess->setList(allList);
m_pSRunningProcess->start();
}
}
void SEffectLogic::slotUserAbort()
{
if (!m_pSRunningProcess->isRunning())
{
m_pSAddDelWidget->enableBtnAdd(true);
m_pSAddDelWidget->enableBtnDel(true);
m_pSRunningListWidget->enableBtnForceStart(true);
m_pSRunningListWidget->enableBtnForceStop(false);
m_pSRunningListWidget->enableBtnTimerStart(true);
m_pSRunningListWidget->enableBtnTimerStop(false);
m_pSLogWidget->writeLog("Stopped");
}
}
void SEffectLogic::slotTerminateError()
{
if (!m_pSRunningProcess->isRunning())
{
if (!m_pSTimer->isActive())
{
m_pSRunningListWidget->enableBtnForceStart(true);
m_pSRunningListWidget->enableBtnForceStop(false);
m_pSRunningListWidget->enableBtnTimerStart(true);
m_pSRunningListWidget->enableBtnTimerStop(false);
}
m_pSAddDelWidget->enableBtnAdd(true);
m_pSAddDelWidget->enableBtnDel(true);
m_pSLogWidget->writeLog("Error Occurs. Stopped");
}
}
void SEffectLogic::slotCompleteCompany(int _companyNum, const SReportSummary& _reportSummary)
{
m_pSRunningListWidget->setInfo(_companyNum, _reportSummary.nOk, _reportSummary.nError,
_reportSummary.nActiveEventCode, _reportSummary.nAllGroupEvent,
_reportSummary.nTotal);
m_pSRunningListWidget->setComplete(_companyNum);
}
void SEffectLogic::slotSuccessErrorCompany(int _companyNum)
{
m_pSRunningListWidget->setInfoErrortoOk(_companyNum);
}
void SEffectLogic::slotCompanyStart(int _companyNum)
{
m_pSRunningListWidget->setRunning(_companyNum);
}
void SEffectLogic::slotCompanyOutdated(const QVector<int>& _vecCompany)
{
foreach (auto i, _vecCompany)
{
m_pSRunningListWidget->setOutDate(i);
}
}
void SEffectLogic::slotTerminateNormal(const QVector<SEffectRow>& _error,
const QMap<int, SReportSummary>& _report)
{
qDebug() << "slotTerminateNormal";
for (auto iterPos = _report.cbegin(); iterPos != _report.cend(); ++iterPos)
{
QString str;
str += QString::number(iterPos.key()) + ":";
str += QString::number(iterPos.value().nOk) + "/";
str += QString::number(iterPos.value().nError) + "/";
str += QString::number(iterPos.value().nActiveEventCode) + "/";
str += QString::number(iterPos.value().nAllGroupEvent) + "/";
str += QString::number(iterPos.value().nTotal);
m_pSLogWidget->writeLog(str);
}
qDebug() << "Error size : " << _error.size();
qDebug() << "nRetry : " << nRetry;
if ((_error.size() > 0) && (nRetry-- > 0))
{
m_pSLogWidget->writeLog("Error Retry : " + QString::number(nRetry + 1));
m_pSRunningProcess->setList(_error);
m_pSRunningProcess->start();
}
else
{
m_pSAddDelWidget->enableBtnAdd(true);
m_pSAddDelWidget->enableBtnDel(true);
m_pSRunningListWidget->enableBtnForceStart(true);
m_pSRunningListWidget->enableBtnForceStop(false);
m_pSRunningListWidget->enableBtnTimerStart(true);
m_pSRunningListWidget->enableBtnTimerStop(false);
nRetry = RETRY;
m_pSLogWidget->writeLog("Complete");
}
}

53
EffectUI/seffectlogic.h Normal file
View File

@@ -0,0 +1,53 @@
#ifndef SEFFECTLOGIC
#define SEFFECTLOGIC
class SRunningProcess;
class STimer;
class SRunningListWidget;
class SAddDelWidget;
class SLogWidget;
#include "sutilclass.h"
#include <QObject>
#include <QVector>
class SEffectLogic:public QObject
{
Q_OBJECT
public:
SEffectLogic();
void setSRunningProcess(SRunningProcess* _p);
void setSTimer(STimer* _p);
void setSRunningWidget(SRunningListWidget* _p);
void setSAddDelWidget(SAddDelWidget* _p);
void setSLogWidget(SLogWidget* _p);
void initConnect();
private slots:
void slotStartByTimer();
void slotUserAbort();
void slotTerminateError();
void slotCompleteCompany(int _companyNum, const SReportSummary& _reportSummary);
void slotSuccessErrorCompany(int _companyNum);
void slotCompanyStart(int _companyNum);
void slotCompanyOutdated(const QVector<int>& _vecCompany);
void slotTerminateNormal(const QVector<SEffectRow>& _error,
const QMap<int, SReportSummary>& _report);
void slotClickForceStart();
void slotClickForceStop();
void slotClickTimerStart();
void slotClickTimerStop();
private:
SRunningProcess* m_pSRunningProcess;
STimer* m_pSTimer;
SRunningListWidget* m_pSRunningListWidget;
SAddDelWidget* m_pSAddDelWidget;
SLogWidget* m_pSLogWidget;
int nRetry;
};
#endif // SEFFECTLOGIC