Files
clients/EffectUI/srunninglistwidget.cpp
admin bdd6780920 widget 클래스들의 기초 클래스를 QObject 에서 QWidget으로 변경
git-svn-id: svn://192.168.0.12/source@299 8346c931-da38-4b9b-9d4c-e48b93cbd075
2016-10-07 10:05:37 +00:00

309 lines
9.2 KiB
C++

#include "srunninglistwidget.h"
#include "sutilfunction.h"
#include "sutilclass.h"
#include <QPushButton>
#include <QString>
#include <QVector>
#include <QTableWidget>
#include <QVBoxLayout>
#include <QSqlDatabase>
#include <QSettings>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QDateTime>
namespace
{
const QString strDatabaseName("runninglist");
}
enum class SRunningListWidget::E_TABLE_HEADER
{
COMPANY = 0,
START_DATE,
END_DATE,
EVENT_NUM,
STATUS,
LAST_UPDATE_TIME,
MAX
};
SRunningListWidget::SRunningListWidget(QWidget* parent) :
QWidget(parent),
m_pwParent(this), m_pbtnTimerStart(new QPushButton(this)),
m_pbtnTimerStop(new QPushButton(this)), m_pbtnForceStart(new QPushButton(this)),
m_pbtnForceStop(new QPushButton(this)), m_ptableWidget(new QTableWidget(this)),
m_playout(new QVBoxLayout(this)), m_pslTableHeader(new QStringList)
{
*m_pslTableHeader << "Company" << "Start date" << "End date"
<< "Event Num" << "Status" << "Last Update Time";
initButton();
initDatabase();
initTableWidget();
initLayout();
resetTableHeader();
}
void SRunningListWidget::initButton()
{
m_pbtnForceStart->setText("Force Start");
m_pbtnForceStop->setText("Force Stop");
m_pbtnTimerStart->setText("Timer Start");
m_pbtnTimerStop->setText("Timer Stop");
connect(m_pbtnForceStart, &QPushButton::released,
this, &SRunningListWidget::slotForceStart);
connect(m_pbtnForceStop, &QPushButton::released,
this, &SRunningListWidget::slotForceStop);
connect(m_pbtnTimerStart, &QPushButton::released,
this, &SRunningListWidget::slotTimerStart);
connect(m_pbtnTimerStop, &QPushButton::released,
this, &SRunningListWidget::slotTimerStop);
}
void SRunningListWidget::initDatabase()
{
databaseSetting(strDatabaseName);
}
void SRunningListWidget::initTableWidget()
{
m_ptableWidget->setColumnCount(m_pslTableHeader->size());
m_ptableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
m_ptableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
m_ptableWidget->setSortingEnabled(true);
//m_ptableWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
connect(m_ptableWidget, &QTableWidget::itemSelectionChanged,
this, &SRunningListWidget::slotClickedItem);
}
void SRunningListWidget::initLayout()
{
QHBoxLayout *pblbutton = new QHBoxLayout;
pblbutton->addWidget(m_pbtnTimerStart);
pblbutton->addWidget(m_pbtnTimerStop);
pblbutton->addWidget(m_pbtnForceStart);
pblbutton->addWidget(m_pbtnForceStop);
m_playout->addWidget(m_ptableWidget);
m_playout->addLayout(pblbutton);
}
void SRunningListWidget::slotClickedItem()
{
emit signalClickItem();
}
QVector<int> SRunningListWidget::getSelectedList() const
{
auto modelIndexes = m_ptableWidget->selectionModel()->selectedRows();
QVector<int> items;
foreach (auto& modelIndex, modelIndexes)
{
items.append(modelIndex.row());
}
return items;
}
QVector<int> SRunningListWidget::getAllList() const
{
QVector<int> items;
for (int i = 0; i < m_ptableWidget->rowCount(); ++i)
{
int num = m_ptableWidget->item(i, static_cast<int>(E_TABLE_HEADER::COMPANY))->
data(Qt::UserRole).toInt();
items.append(num);
}
return items;
}
void SRunningListWidget::removeSelectedList()
{
QModelIndexList selectedList = m_ptableWidget->selectionModel()->selectedRows();
for (int i = selectedList.size() - 1; i >= 0; --i)
{
m_ptableWidget->removeRow(selectedList[i].row());
}
}
QVBoxLayout* SRunningListWidget::getLayout() const
{
return m_playout;
}
void SRunningListWidget::delList(int _id)
{
if (m_setNumber.contains(_id))
{
m_setNumber.remove(_id);
for (int i = 0; i < m_ptableWidget->rowCount(); ++i)
{
auto item = m_ptableWidget->item(i, static_cast<int>(E_TABLE_HEADER::COMPANY));
if (item->data(Qt::UserRole).toInt() == _id)
{
m_ptableWidget->removeRow(i);
break;
}
}
}
}
void SRunningListWidget::delList(QVector<int> _ids)
{
foreach (auto& id, _ids)
{
delList(id);
}
}
void SRunningListWidget::resetTableHeader()
{
m_ptableWidget->clear();
m_ptableWidget->setHorizontalHeaderLabels(*m_pslTableHeader);
}
SRunningListWidget::~SRunningListWidget()
{
/*
if (m_pwParent == nullptr)
{
disconnect(m_pbtnForceStart, &QPushButton::released,
this, &SRunningListWidget::slotForceStart);
disconnect(m_pbtnForceStop, &QPushButton::released,
this, &SRunningListWidget::slotForceStop);
disconnect(m_pbtnTimerStart, &QPushButton::released,
this, &SRunningListWidget::slotTimerStart);
disconnect(m_pbtnTimerStop, &QPushButton::released,
this, &SRunningListWidget::slotTimerStop);
disconnect(m_ptableWidget, &QTableWidget::itemSelectionChanged,
this, &SRunningListWidget::slotClickedItem);
delete m_pbtnForceStart;
delete m_pbtnForceStop;
delete m_pbtnTimerStart;
delete m_pbtnTimerStop;
delete m_ptableWidget;
delete m_playout;
}
*/
}
void SRunningListWidget::addList(QVector<QVector<QTableWidgetItem>> items)
{
foreach (auto& item, items)
{
int num = item[static_cast<int>(E_TABLE_HEADER::COMPANY)].data(Qt::UserRole).toInt();
if (m_setNumber.contains(num))
continue;
m_setNumber.insert(num);
m_ptableWidget->insertRow(m_ptableWidget->rowCount());
m_ptableWidget->setItem(m_ptableWidget->rowCount() - 1,
static_cast<int>(E_TABLE_HEADER::COMPANY),
new QTableWidgetItem(item[static_cast<int>(E_TABLE_HEADER::COMPANY)]));
m_ptableWidget->setItem(m_ptableWidget->rowCount() - 1,
static_cast<int>(E_TABLE_HEADER::START_DATE),
new QTableWidgetItem(item[static_cast<int>(E_TABLE_HEADER::START_DATE)]));
m_ptableWidget->setItem(m_ptableWidget->rowCount() - 1,
static_cast<int>(E_TABLE_HEADER::END_DATE),
new QTableWidgetItem(item[static_cast<int>(E_TABLE_HEADER::END_DATE)]));
m_ptableWidget->setItem(m_ptableWidget->rowCount() - 1,
static_cast<int>(E_TABLE_HEADER::EVENT_NUM),
new STableWidgetItem(item[static_cast<int>(E_TABLE_HEADER::EVENT_NUM)]));
m_ptableWidget->setItem(m_ptableWidget->rowCount() - 1,
static_cast<int>(E_TABLE_HEADER::STATUS),
new QTableWidgetItem(""));
m_ptableWidget->setItem(m_ptableWidget->rowCount() - 1,
static_cast<int>(E_TABLE_HEADER::LAST_UPDATE_TIME),
new QTableWidgetItem(""));
}
}
QTableWidgetItem* SRunningListWidget::findWidgetItembyID(int _id, E_TABLE_HEADER _header) const
{
QTableWidgetItem* item = nullptr;
for (int i = 0; i < m_ptableWidget->rowCount(); ++i)
{
QTableWidgetItem* temp = m_ptableWidget->item(i, static_cast<int>(E_TABLE_HEADER::COMPANY));
if (temp->data(Qt::UserRole).toInt() == _id)
{
item = m_ptableWidget->item(i, static_cast<int>(_header));
break;
}
}
return item;
}
void SRunningListWidget::enableBtnTimerStart(bool _enable)
{
m_pbtnTimerStart->setEnabled(_enable);
}
void SRunningListWidget::enableBtnTimerStop(bool _enable)
{
m_pbtnTimerStop->setEnabled(_enable);
}
void SRunningListWidget::enableBtnForceStart(bool _enable)
{
m_pbtnForceStart->setEnabled(_enable);
}
void SRunningListWidget::enableBtnForceStop(bool _enable)
{
m_pbtnForceStop->setEnabled(_enable);
}
void SRunningListWidget::setRunning(int _id)
{
QTableWidgetItem* item = findWidgetItembyID(_id, E_TABLE_HEADER::STATUS);
if (item)
item->setText("Running");
}
void SRunningListWidget::setWaiting(int _id)
{
QTableWidgetItem* item = findWidgetItembyID(_id, E_TABLE_HEADER::STATUS);
if (item)
item->setText("Wating");
}
void SRunningListWidget::setComplete(int _id)
{
QTableWidgetItem* item = findWidgetItembyID(_id, E_TABLE_HEADER::LAST_UPDATE_TIME);
if (item)
item->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
}
void SRunningListWidget::slotTimerStart()
{
qDebug() << "clicked TimerStart()";
emit signalTimerStart();
}
void SRunningListWidget::slotTimerStop()
{
qDebug() << "clicked slotTimerStop()";
emit signalTimerStop();
}
void SRunningListWidget::slotForceStart()
{
qDebug() << "clicked slotForceStart()";
emit signalForceStart();
}
void SRunningListWidget::slotForceStop()
{
qDebug() << "clicked slotForceStop()";
emit signalForceStop();
}