adddelwidget 추가

srunninglistwidget 추가

git-svn-id: svn://192.168.0.12/source@298 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2016-10-07 09:36:50 +00:00
parent 85c47edea3
commit 522bebb88d
12 changed files with 352 additions and 44 deletions

View File

@@ -19,13 +19,15 @@ SOURCES += main.cpp\
sutilfunction.cpp \
sutilclass.cpp \
srunninglistwidget.cpp \
stimer.cpp
stimer.cpp \
sadddelwidget.cpp
HEADERS += widget.h \
scompanylistwidget.h \
sutilfunction.h \
sutilclass.h \
srunninglistwidget.h \
stimer.h
stimer.h \
sadddelwidget.h
FORMS += widget.ui

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 3.3.0, 2016-10-04T19:38:35. -->
<!-- Written by QtCreator 3.3.0, 2016-10-06T19:12:06. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -0,0 +1,69 @@
#include "sadddelwidget.h"
#include <QPushButton>
#include <QVBoxLayout>
#include <QDebug>
SAddDelWidget::SAddDelWidget(QWidget *parent):
m_pbtnAdd(new QPushButton(parent)), m_pbtnDel(new QPushButton(parent)),
m_pParent(parent), m_playout(new QVBoxLayout(parent))
{
initButton();
initLayout();
}
SAddDelWidget::~SAddDelWidget()
{
if (m_pParent == nullptr)
{
disconnect(m_pbtnAdd, 0, 0, 0);
disconnect(m_pbtnDel, 0, 0, 0);
delete m_pbtnAdd;
delete m_pbtnDel;
}
}
void SAddDelWidget::initButton()
{
m_pbtnAdd->setText("->");
m_pbtnDel->setText("<-");
m_pbtnAdd->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
m_pbtnDel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
connect(m_pbtnAdd, &QPushButton::released, this, &SAddDelWidget::slotClickedAddBtn);
connect(m_pbtnDel, &QPushButton::released, this, &SAddDelWidget::slotClickedDelBtn);
}
void SAddDelWidget::enableBtnDel(bool _enable)
{
m_pbtnAdd->setEnabled(_enable);
}
void SAddDelWidget::enableBtnAdd(bool _enable)
{
m_pbtnDel->setEnabled(_enable);
}
void SAddDelWidget::slotClickedAddBtn()
{
qDebug() << "click slotClickedAddBtn";
emit signalClickedAddBtn();
}
void SAddDelWidget::slotClickedDelBtn()
{
qDebug() << "click slotClickedDelBtn";
emit signalClickedDelBtn();
}
void SAddDelWidget::initLayout()
{
m_playout->addWidget(m_pbtnAdd);
m_playout->addWidget(m_pbtnDel);
}
QVBoxLayout* SAddDelWidget::getLayout()
{
return m_playout;
}

45
EffectUI/sadddelwidget.h Normal file
View File

@@ -0,0 +1,45 @@
#ifndef SADDDELWIDGET
#define SADDDELWIDGET
#include <QObject>
class QPushButton;
class QVBoxLayout;
class QWidget;
class SAddDelWidget: public QObject
{
Q_OBJECT
public:
explicit SAddDelWidget(QWidget *parent = nullptr);
~SAddDelWidget();
QVBoxLayout* getLayout();
private:
void initButton();
void initLayout();
private slots:
void slotClickedAddBtn();
void slotClickedDelBtn();
public slots:
void enableBtnAdd(bool _enable);
void enableBtnDel(bool _enable);
signals:
void signalClickedAddBtn();
void signalClickedDelBtn();
private:
QPushButton* m_pbtnAdd;
QPushButton* m_pbtnDel;
QWidget* m_pParent;
QVBoxLayout* m_playout;
};
#endif // SADDDELWIDGET

View File

@@ -91,6 +91,7 @@ void SCompanyListWidget::initLayout()
m_playout->addWidget(m_ptableWidget);
m_playout->addLayout(pblbutton);
}
void SCompanyListWidget::initTableWidget()
@@ -99,6 +100,7 @@ void SCompanyListWidget::initTableWidget()
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, &SCompanyListWidget::slotClickedItem);
}
@@ -161,6 +163,7 @@ void SCompanyListWidget::refresh()
QTableWidgetItem *itemCompany =
new QTableWidgetItem(query.value(static_cast<int>(E_TABLE_HEADER::COMPANY) + 1).toString());
itemCompany->setData(Qt::UserRole, query.value(0));
m_ptableWidget->setRowHidden(nRow, false);
m_ptableWidget->setItem(nRow, static_cast<int>(E_TABLE_HEADER::COMPANY), itemCompany);
m_ptableWidget->setItem(nRow, static_cast<int>(E_TABLE_HEADER::START_DATE),
@@ -172,7 +175,6 @@ void SCompanyListWidget::refresh()
query.value(static_cast<int>(E_TABLE_HEADER::EVENT_NUM) + 1).toInt())));
m_ptableWidget->setItem(nRow, static_cast<int>(E_TABLE_HEADER::STATUS),
new QTableWidgetItem(""));
m_ptableWidget->setRowHidden(nRow, false);
++nRow;
}
@@ -297,7 +299,7 @@ QVector<QVector<QTableWidgetItem>> SCompanyListWidget::getSelectedList() const
item.append(QTableWidgetItem(*m_ptableWidget->item(modelIndex.row(), static_cast<int>(E_TABLE_HEADER::COMPANY))));
item.append(QTableWidgetItem(*m_ptableWidget->item(modelIndex.row(), static_cast<int>(E_TABLE_HEADER::START_DATE))));
item.append(QTableWidgetItem(*m_ptableWidget->item(modelIndex.row(), static_cast<int>(E_TABLE_HEADER::END_DATE))));
item.append(QTableWidgetItem(*m_ptableWidget->item(modelIndex.row(), static_cast<int>(E_TABLE_HEADER::EVENT_NUM))));
item.append(STableWidgetItem(*m_ptableWidget->item(modelIndex.row(), static_cast<int>(E_TABLE_HEADER::EVENT_NUM))));
items.append(item);
}
return items;

View File

@@ -1,4 +1,7 @@
#include "srunninglistwidget.h"
#include "sutilfunction.h"
#include "sutilclass.h"
#include <QPushButton>
#include <QString>
#include <QVector>
@@ -9,23 +12,37 @@
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>
#include <QDateTime>
namespace
{
QString strDatabaseName("runninglist");
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) :
m_pwParent(parent), m_pbtnTimerStart(new QPushButton(parent)), m_pbtnTimerStop(new QPushButton(parent)),
m_pbtnForceStart(new QPushButton(parent)), m_pbtnForceStop(new QPushButton(parent)), m_ptableWidget(new QTableWidget(parent)),
m_pwParent(parent), m_pbtnTimerStart(new QPushButton(parent)),
m_pbtnTimerStop(new QPushButton(parent)), m_pbtnForceStart(new QPushButton(parent)),
m_pbtnForceStop(new QPushButton(parent)), m_ptableWidget(new QTableWidget(parent)),
m_playout(new QVBoxLayout(parent)), m_pslTableHeader(new QStringList)
{
*m_pslTableHeader << "Company" << "Start date" << "End date" << "Event Num" << "Status" << "Last Update Time";
*m_pslTableHeader << "Company" << "Start date" << "End date"
<< "Event Num" << "Status" << "Last Update Time";
initButton();
initDatabase();
initLayout();
initTableWidget();
initLayout();
resetTableHeader();
}
void SRunningListWidget::initButton()
@@ -35,105 +52,254 @@ void SRunningListWidget::initButton()
m_pbtnTimerStart->setText("Timer Start");
m_pbtnTimerStop->setText("Timer Stop");
connect(m_pbtnForceStart, &QPushButton::released, this, &SRunningListWidget::)
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(""));
}
}
void SRunningListWidget::enableBtnTimerStart(bool enable)
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::enableBtnTimerStop(bool enable)
void SRunningListWidget::enableBtnTimerStart(bool _enable)
{
m_pbtnTimerStart->setEnabled(_enable);
}
void SRunningListWidget::enableBtnForceStart(bool enable)
void SRunningListWidget::enableBtnTimerStop(bool _enable)
{
m_pbtnTimerStop->setEnabled(_enable);
}
void SRunningListWidget::enableBtnForceStop(bool 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)
{
}
QVector<int> SRunningListWidget::getList()
{
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();
}

View File

@@ -4,13 +4,14 @@
#include <QObject>
#include <memory>
#include <QVector>
#include <QSet>
#include <QTableWidgetItem>
class QPushButton;
class QTableWidget;
class QDateEdit;
class QVBoxLayout;
class QStringList;
class QTableWidgetItem;
class SRunningListWidget:public QObject
{
@@ -32,28 +33,37 @@ private:
void initDatabase();
void initLayout();
void resetTableHeader();
QTableWidgetItem* findWidgetItembyID(int _id, E_TABLE_HEADER _header) const;
public slots:
void addList(QVector<QVector<QTableWidgetItem>> items);
QVector<int> getList();
QVector<int> getSelectedList() const;
QVector<int> getAllList() const;
void enableBtnTimerStart(bool enable);
void enableBtnTimerStop(bool enable);
void enableBtnForceStart(bool enable);
void enableBtnForceStop(bool enable);
void setRunning(int _id);
void setWaiting(int _id);
void setComplete(int _id);
void removeSelectedList();
void slotTimerStart();
void slotTimerStop();
void slotForceStart();
void slotForceStop();
void setRunning(int _id);
void setWaiting(int _id);
void setComplete(int _id);
private slots:
void slotClickedItem();
signals:
void signalTimerStart();
void signalTimerStop();
void signalForceStart();
void signalForceStop();
void signalClickItem();
private:
QPushButton* m_pbtnTimerStart;
@@ -64,6 +74,7 @@ private:
QWidget* m_pwParent;
QVBoxLayout *m_playout;
std::unique_ptr<QStringList> m_pslTableHeader;
QSet<int> m_setNumber;
};

View File

@@ -9,12 +9,12 @@ const int TIME = 300000; // 5 minute
STimer::STimer(): m_pTimer(new QTimer), m_nPreviousHour(-1)
{
m_pTimer->setInterval(TIME);
connect(&(*m_pTimer), &QTimer::timeout, this, &checkTimeout);
connect(&(*m_pTimer), &QTimer::timeout, this, &STimer::checkTimeout);
}
STimer::~STimer()
{
disconnect(&(*m_pTimer), &QTimer::timeout, this, &checkTimeout);
disconnect(&(*m_pTimer), &QTimer::timeout, this, &STimer::checkTimeout);
}
STimer::STimer(int time): STimer()
@@ -44,7 +44,7 @@ void STimer::stop()
m_pTimer->stop();
}
bool STimer::isActive() const noexcept
bool STimer::isActive() const
{
return m_pTimer->isActive();
}

View File

@@ -25,7 +25,7 @@ public:
STimer& operator=(const STimer& other) = delete;
void start();
void stop();
bool isActive() const noexcept;
bool isActive() const;
void set(int time);
void set(QVector<int> times);
void unset(int time);

View File

@@ -16,7 +16,7 @@ STableWidgetItem::STableWidgetItem(const QString &text, int type):
}
STableWidgetItem::STableWidgetItem(const STableWidgetItem &other):
STableWidgetItem::STableWidgetItem(const QTableWidgetItem &other):
QTableWidgetItem(other)
{

View File

@@ -9,7 +9,7 @@ public:
STableWidgetItem(int type = Type);
STableWidgetItem(const QString & text, int type = Type);
STableWidgetItem(const QIcon & icon, const QString & text, int type = Type);
STableWidgetItem(const STableWidgetItem & other);
STableWidgetItem(const QTableWidgetItem & other);
virtual bool operator<(const QTableWidgetItem & other) const override;
};

View File

@@ -1,15 +1,28 @@
#include "widget.h"
#include "ui_widget.h"
#include "scompanylistwidget.h"
#include <QBoxLayout>
#include "srunninglistwidget.h"
#include "sadddelwidget.h"
#include <QHBoxLayout>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
SCompanyListWidget *c = new SCompanyListWidget(this);
setLayout(c->getLayout());
QWidget *w1 = new QWidget;
QWidget *w2 = new QWidget;
QWidget *w3 = new QWidget;
SCompanyListWidget *c = new SCompanyListWidget(w1);
SRunningListWidget *d = new SRunningListWidget(w2);
SAddDelWidget *e = new SAddDelWidget(w3);
QHBoxLayout* mainLayout = new QHBoxLayout(this);
mainLayout->addWidget(w1);
mainLayout->addWidget(w3);
mainLayout->addWidget(w2);
setLayout(mainLayout);
show();
c->refresh();