You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wheeldetect/src/tpMain/timemgrui.cpp

273 lines
9.7 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#include "timemgrui.h"
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QTableView>
#include <QStandardItemModel>
#include "InfoFile.h"
#include "timemgrctrl.h"
#include "qaddtimedlg.h"
#include <QMessageBox>
#include "IWheelCtrl.h"
#include <qdialog.h>
#include <QDesktopWidget>
#pragma execution_character_set("utf-8")
struct CmpByValueTime {
bool operator()(const TimeStruct & lhs, const TimeStruct & rhs)
{
return lhs.m_startTime < rhs.m_startTime;
}
};
TimeMgrUi::TimeMgrUi(const QString strUiName, IWheelCtrl *p) :m_pCtrl(p), m_strUiName(strUiName)
{
tablemodel = new QStandardItemModel();
QStringList stringList;
stringList << tr("班次") << tr("起始时间") << tr("结束时间");
tablemodel->setHorizontalHeaderLabels(stringList);
//tablemodel->setHorizontalHeaderItem(0, new QStandardItem(tr("班次")));
//tablemodel->setHorizontalHeaderItem(1, new QStandardItem(tr("起始时间")));
//tablemodel->setHorizontalHeaderItem(2, new QStandardItem(tr("结束时间")));
m_pTimeMgr = m_pCtrl->getTimeMgr();
}
TimeMgrUi::~TimeMgrUi()
{
if (tablemodel){
while (tablemodel->rowCount())
{
QList<QStandardItem*> lptr = tablemodel->takeRow(0);
for (int n = 0; n < lptr.size(); n++)
{
delete lptr.at(n);
}
}
tablemodel->clear();
delete tablemodel;
tablemodel = NULL;
}
}
bool TimeMgrUi::onPolished(QWidget* p)
{
QString str = p->objectName();
if (str == "TimeMgr_tableView") {
tableView = qobject_cast<QTableView*>(p);
connect(tableView, SIGNAL(clicked(const QModelIndex &)), this, SLOT(SlotcellClicked(const QModelIndex &)));
}
else if (str == "TimeMgr_ADD_Button") {
connect(p, SIGNAL(clicked()), this, SLOT(SlotButtonClick()));
}
else if (str == "TimeMgr_Del_Button") {
connect(p, SIGNAL(clicked()), this, SLOT(SlotButtonClick()));
}
else if (str == "TimeMgr_Mod_Button") {
connect(p, SIGNAL(clicked()), this, SLOT(SlotButtonClick()));
}
else if (str == "TimeMgr_OK_Button") {
connect(p, SIGNAL(clicked()), this, SLOT(SlotButtonClick()));
}
else if (str == "TimeMgr_label"){
m_label = qobject_cast<QLabel*>(p);
}
else if (m_strUiName == str) {
m_pDlgMain = (QDialog*)p;
m_pDlgMain->setWindowTitle(tr("班次时间管理"));
m_pDlgMain->setWindowIcon(QIcon(":/image/leaper"));
}
else {
return false;
}
return true;
}
Q_SLOT void TimeMgrUi::SlotButtonClick()
{
QObject *obj = sender();
QString str_name = obj->objectName();
if (str_name == "TimeMgr_ADD_Button"){
QAddTimeDlg dlg;
dlg.setWindowTitle(tr("设置参数"));
dlg.setWindowIcon(QIcon(":/image/leaper"));
dlg.setFocus();
if (dlg.exec() == QDialog::Accepted)
{
TimeStruct m_Timestruct;
dlg.GetInfo(m_Timestruct);
if (m_MapTime.contains(m_Timestruct.m_name))
{
return;
}
int nIndex = tablemodel->rowCount();
tablemodel->setItem(nIndex, 0, new QStandardItem(m_Timestruct.m_name));
QString strStart = QString("%1 %2").arg(m_Timestruct.time_start==AM?tr("当天"):tr("隔天")).arg(m_Timestruct.m_startTime.toString("hh:mm"));
QString strEnd = QString("%1 %2").arg(m_Timestruct.time_end == AM ? tr("当天") : tr("隔天")).arg(m_Timestruct.m_endTime.toString("hh:mm"));
tablemodel->setItem(nIndex, 1, new QStandardItem(strStart));
tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd));
m_Timestruct.m_Index = nIndex;
m_MapTime.insert(m_Timestruct.m_name, m_Timestruct);
m_pTimeMgr->AddNewTime(m_Timestruct);
m_label->setText("");
}
}
else if (str_name == "TimeMgr_Del_Button"){
QString str_name = m_label->text();
if (str_name.isEmpty() || str_name == tr("未选中"))
{
//QMessageBox::information(NULL, QString("提示"), QString("未选择班次,请选择进行修改。"), QMessageBox::Ok);
QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("未选择班次,请选择进行修改。"), QMessageBox::Yes, NULL);
infobox.setWindowIcon(QIcon(":/image/leaper"));
infobox.setButtonText(QMessageBox::Yes, tr("确认"));
infobox.exec();
return;
}
QString str = tr("您确定要删除 %1 班次?").arg(str_name);
if (str_name.isEmpty())
return;
QMessageBox infobox(QMessageBox::Information, tr("提示"), str, QMessageBox::Ok | QMessageBox::Cancel, NULL);
infobox.setWindowIcon(QIcon(":/image/leaper"));
infobox.setButtonText(QMessageBox::Ok, tr("确认"));
infobox.setButtonText(QMessageBox::Cancel, tr("取消"));
if (infobox.exec() == QMessageBox::Ok)
{
if (str_name.isEmpty())
return;
QModelIndex nIndex = tableView->currentIndex();
int row = nIndex.row();
if (tablemodel->removeRow(nIndex.row()))
int a = 0;
else
int b = 0;
TimeStruct m_TimeStruct;
m_TimeStruct.m_name = str_name;
m_MapTime.remove(str_name);
m_pTimeMgr->DelOldTime(m_TimeStruct);
m_label->setText("");
}
}
else if (str_name == "TimeMgr_Mod_Button"){
QString str_name = m_label->text();
if (str_name.isEmpty()||str_name==tr("未选中"))
{
//QMessageBox::information(NULL, QString("提示"), QString("未选择班次,请选择进行修改。"), QMessageBox::Ok);
QMessageBox infobox(QMessageBox::Information, tr("提示"), tr("未选择班次,请选择进行修改。"), QMessageBox::Yes, NULL);
infobox.setWindowIcon(QIcon(":/image/leaper"));
infobox.setButtonText(QMessageBox::Yes, tr("确认"));
infobox.exec();
return;
}
QAddTimeDlg dlg;
dlg.SetInfo(m_MapTime.value(str_name));
if (dlg.exec() == QDialog::Accepted)
{
TimeStruct m_tempTime,m_newTime;
m_tempTime.m_name = str_name;
m_MapTime.remove(str_name);
dlg.GetInfo(m_newTime);
m_pTimeMgr->ModTime(m_tempTime, m_newTime);
m_MapTime.insert(m_newTime.m_name, m_newTime);
int nIndex = 0;
std::vector<TimeStruct> vec(m_MapTime.begin(), m_MapTime.end());
std::sort(vec.begin(), vec.end(), CmpByValueTime());
for (int n = 0; n < vec.size(); n++)
{
TimeStruct tiItem = vec.at(n);
tablemodel->setItem(nIndex, 0, new QStandardItem(tiItem.m_name));
QString strStart = QString("%1 %2").arg(tiItem.time_start == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_startTime.toString("hh:mm"));
QString strEnd = QString("%1 %2").arg(tiItem.time_end == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_endTime.toString("hh:mm"));
tablemodel->setItem(nIndex, 1, new QStandardItem(strStart));
tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd));
nIndex++;
}
// for (QMap<QString, TimeStruct>::iterator its = m_MapTime.begin(); its != m_MapTime.end(); ++its)
// {
// tablemodel->setItem(nIndex, 0, new QStandardItem(its->m_name));
// QString strStart = QString("%1 %2").arg(its->time_start == AM ? tr("当天") : tr("隔天")).arg(its->m_startTime.toString("hh:mm"));
// QString strEnd = QString("%1 %2").arg(its->time_end == AM ? tr("当天") : tr("隔天")).arg(its->m_endTime.toString("hh:mm"));
// tablemodel->setItem(nIndex, 1, new QStandardItem(strStart));
// tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd));
//
// // tablemodel->setItem(nIndex, 1, new QStandardItem(its->m_startTime.toString("hh:mm")));
// // tablemodel->setItem(nIndex, 2, new QStandardItem(its->m_endTime.toString("hh:mm")));
// nIndex++;
// }
m_label->setText("");
}
}
else if (str_name == "TimeMgr_OK_Button"){
//QDialog::accept();
}
}
Q_SLOT void TimeMgrUi::SlotcellClicked(const QModelIndex & index)
{
if (m_MapTime.size() > 0)
{
QModelIndex nindex = tablemodel->index(index.row(), 0);
QString str = nindex.data().toString();
m_label->setText(str);
}
}
void TimeMgrUi::SetTimeLable()
{
this->m_MapTime = m_pTimeMgr->getAllTime();
tableView->setModel(tablemodel);
tableView->setColumnWidth(0, 100);
tableView->setColumnWidth(1, 100);
tableView->setColumnWidth(2, 100);
//默认显示行头,如果你觉得不美观的话,我们可以将隐藏
//m_tableView->verticalHeader()->hide();
tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
//tableView->resizeColumnsToContents();
//如果你用在QTableView中使用右键菜单需启用该属性
//tableView->setContextMenuPolicy(Qt::CustomContextMenu);
tableView->setWordWrap(false);
//tableView->setShowGrid(false);//显示表格线
tableView->setAlternatingRowColors(true);
int nIndex = 0;
if (m_MapTime.size() <= 0)
return;
// for (QMap<QString, TimeStruct>::iterator its = m_MapTime.begin(); its != m_MapTime.end(); ++its)
// {
// tablemodel->setItem(nIndex, 0, new QStandardItem(its->m_name));
// QString strStart = QString("%1 %2").arg(its->time_start == AM ? tr("当天") : tr("隔天")).arg(its->m_startTime.toString("hh:mm"));
// QString strEnd = QString("%1 %2").arg(its->time_end == AM ? tr("当天") : tr("隔天")).arg(its->m_endTime.toString("hh:mm"));
// tablemodel->setItem(nIndex, 1, new QStandardItem(strStart));
// tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd));
// nIndex++;
// }
std::vector<TimeStruct> vec(m_MapTime.begin(), m_MapTime.end());
std::sort(vec.begin(), vec.end(), CmpByValueTime());
for (int n= 0; n < vec.size(); n++)
{
TimeStruct tiItem = vec.at(n);
tablemodel->setItem(nIndex, 0, new QStandardItem(tiItem.m_name));
QString strStart = QString("%1 %2").arg(tiItem.time_start == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_startTime.toString("hh:mm"));
QString strEnd = QString("%1 %2").arg(tiItem.time_end == AM ? tr("当天") : tr("隔天")).arg(tiItem.m_endTime.toString("hh:mm"));
tablemodel->setItem(nIndex, 1, new QStandardItem(strStart));
tablemodel->setItem(nIndex, 2, new QStandardItem(strEnd));
nIndex++;
}
}
bool TimeMgrUi::onExec()
{
SetTimeLable();
if (m_pDlgMain) {
QDesktopWidget* desktop = QApplication::desktop();//
m_pDlgMain->move((desktop->width() - m_pDlgMain->width()) / 2, (desktop->height() - m_pDlgMain->height()) / 2);
m_pDlgMain->exec();
}
return true;
}