#include "controlbrightnessschedule.h" #include "ui_controlbrightnessschedule.h" #include "LoUIClass/x_uimsgboxok.h" #include "QFileDialog" #include "QDir" #include #include #include #include #include #include "controlbrightnessscheduleedit.h" #include "LoUIClass/x_spinboxdelegate.h" #include "LoUIClass/x_timeeditdelegate.h" #include "loappconfig.h" #include "QSettings" ControlBrightnessSchedule::ControlBrightnessSchedule(QWidget *parent,QList *list) : QWidget(parent), ui(new Ui::ControlBrightnessSchedule) { m_pLedlist=list; ui->setupUi(this); refreshLable(); ui->pushButtonAdd->setProperty("ssType", "progManageTool"); ui->pushButtonAdd->setStyleSheet("QPushButton{background:rgba(28,154,210,1);}"); ui->pushButtonImport->setProperty("ssType", "progManageTool"); ui->pushButtonImport->setStyleSheet("QPushButton{background:rgba(28,154,210,1);}"); ui->pushButtonExport->setProperty("ssType", "progManageTool"); ui->pushButtonExport->setStyleSheet("QPushButton{background:rgba(28,154,210,1);}"); ui->pushButtonDelete->setProperty("ssType", "progManageTool"); ui->pushButtonDelete->setStyleSheet("QPushButton{background:rgba(28,154,210,1);}"); ui->pushButtonClear->setProperty("ssType", "progManageTool"); ui->pushButtonClear->setStyleSheet("QPushButton{background:rgba(28,154,210,1);}"); ui->pushButtonApply->setProperty("ssType", "progManageTool"); ui->pushButtonApply->setStyleSheet("QPushButton{background:rgba(28,154,210,1);}"); ui->pushButtonReadback->setProperty("ssType", "progManageTool"); ui->pushButtonReadback->setStyleSheet("QPushButton{background:rgba(28,154,210,1);}"); ui->lineEdit->setText("255"); m_pModel = new QStandardItemModel(this); m_pModel->setColumnCount(3); m_pModel->setHeaderData(0,Qt::Horizontal, tr("BrightnessValue")); m_pModel->setHeaderData(1,Qt::Horizontal, tr("Start Time")); m_pModel->setHeaderData(2,Qt::Horizontal, tr("End Time")); ui->tableView->setModel(m_pModel); SpinBoxDelegate *pBrightnessDelegate=new SpinBoxDelegate(this,0); ui->tableView->setItemDelegateForColumn(0,pBrightnessDelegate); X_timeEditDelegate *pStartTimeDelegate=new X_timeEditDelegate(this); ui->tableView->setItemDelegateForColumn(1,pStartTimeDelegate); ui->tableView->setItemDelegateForColumn(2,pStartTimeDelegate); //! [0] //ui->tableView->horizontalHeader()->setStretchLastSection(true); ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); // ui->tableView->verticalHeader()->hide(); ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableView->setFocusPolicy(Qt::NoFocus); //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); //只读 //设置表格的单元为只读属性,即不能编辑 //ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers); MARCO_DEFINE_CONTROL_FUNC2(parent->parent()->parent(),parent->parent()) connect(ui->pushButtonAdd,SIGNAL(clicked()),this,SLOT(OnClickAdd())); connect(ui->pushButtonImport,SIGNAL(clicked()),this,SLOT(OnClickImport())); connect(ui->pushButtonExport,SIGNAL(clicked()),this,SLOT(OnClickExport())); connect(ui->pushButtonDelete,SIGNAL(clicked()),this,SLOT(OnClickDelete())); connect(ui->pushButtonClear,SIGNAL(clicked()),this,SLOT(OnClickClear())); connect(ui->pushButtonApply,SIGNAL(clicked()),this,SLOT(OnClickApply())); connect(ui->pushButtonReadback,SIGNAL(clicked()),this,SLOT(OnClickReadback())); } ControlBrightnessSchedule::~ControlBrightnessSchedule() { delete ui; } void ControlBrightnessSchedule::refreshLable() { ui->labelDefaultBrightness->setText(tr("Default brightness")); ui->pushButtonAdd->setText(tr("Add")); ui->pushButtonApply->setText(tr("Apply")); ui->pushButtonClear->setText(tr("Clear")); ui->pushButtonDelete->setText(tr("Delete")); ui->pushButtonImport->setText(tr("Import")); ui->pushButtonExport->setText(tr("Export")); ui->pushButtonReadback->setText(tr("Readback")); ui->label->setText(tr("Default brightness tip")); } void ControlBrightnessSchedule::onSelectedDeviceList(QList *list) { m_pLedlist=list; if(m_pLedlist==nullptr) return; if(m_pLedlist->count()==1) { ui->pushButtonReadback->setEnabled(true); } else { ui->pushButtonReadback->setEnabled(false); } MACRO_DEFINE_CONTROL_FUNC3 } //获取到httpPost的应答,如果参数变化需要出发修改控件item的内容 void ControlBrightnessSchedule::OnProHttpResponse(QString url, QString postMD5, QByteArray data) { Q_UNUSED(postMD5) //qDebug()<< url + "\r\n"+m_strUrl; if(url == m_strUrl) { QJsonParseError parseJsonErr; QJsonDocument document = QJsonDocument::fromJson(data,&parseJsonErr); if(!(parseJsonErr.error == QJsonParseError::NoError)) { if(data.size()==0) qDebug()<<"json is empty"; else qDebug()<m_strCardId +"---------"+ strType; if(strType == "GetAutoBrightnessTask") { } else if(strType == "SetAutoBrightnessTask") { //emit sigOutputInfo(m_pLedCard->m_strCardId+":"+tr("receive")+"<-"+tr("SetBrightness")+":"+tr("success")); } MACRO_ASKTIME_STOP MACRO_POSTING_DLG_UNLOCK } } } //获取到httpPost的应答,如果参数变化需要出发修改控件item的内容 void ControlBrightnessSchedule::OnProHttpResponseAll(QString url, QString postMD5, QByteArray data) { Q_UNUSED(postMD5) //qDebug()<< url + "\r\n"+m_strUrl; if(url == m_strUrl) { QJsonParseError parseJsonErr; QJsonDocument document = QJsonDocument::fromJson(data,&parseJsonErr); if(!(parseJsonErr.error == QJsonParseError::NoError)) { if(data.size()==0) qDebug()<<"json is empty"; else qDebug()<m_strCardId +"---------"+ strType; if(strType == "GetAutoBrightnessTask") { emit sigHaveSchedule(JieXiJsonTaskBrightness(jsonObject["taskBrightness"].toObject())); } } } } void ControlBrightnessSchedule::OnControlTypeSwitchIndexChanged(int index) { if(index==ENUM_CONTRL_WIDGET_BRIGHTNESS) { m_bSelected=true; if(m_pLedCard!=nullptr) onReadbackAllThisPage(); } else { m_bSelected=false; } } void ControlBrightnessSchedule::onReadbackAllThisPage() { if(m_pLedlist==nullptr) return; if(m_pLedlist->count()!=1) return; QJsonObject json; json.insert("_id", getRandomString(10)); json.insert("_type", "GetAutoBrightnessTask"); HttpPostByTypeJsonObject(pHpptClientAll,m_strUrl,json); } void ControlBrightnessSchedule::OnClickAdd() { QList Item; Item.append(new QStandardItem(QString::number(255))); Item.append(new QStandardItem("00:00")); Item.append(new QStandardItem("01:00")); Item.at(0)->setTextAlignment(Qt::AlignCenter); Item.at(1)->setTextAlignment(Qt::AlignCenter); Item.at(2)->setTextAlignment(Qt::AlignCenter); //m_lineEidt[i]->installEventFilter(this); //Item.at(0)->setdsetValidator(new QRegExpValidator(rx, this)); m_pModel->appendRow(Item); // ControlBrightnessScheduleEdit *pDlg=new ControlBrightnessScheduleEdit(this); // connect(pDlg,SIGNAL(sigAddOneItem(QString,QString,int)),this,SLOT(OnAddOneItem(QString,QString,int))); // pDlg->show(); } void ControlBrightnessSchedule::OnClickImport() { LoAppConfig *cfg = LoAppConfig::getInstance(); QSettings *settings = new QSettings(cfg->OrganizationName(), cfg->ApplicationName()); QString strDir="/"; if(settings->value("lasOpendFileDlgtDir").isValid()) { strDir=settings->value("lasOpendFileDlgtDir").toString(); } else { } QFileDialog dlg; QString strBrightScheduleFile = QFileDialog::getOpenFileName(this, "open file dialog", strDir, tr("BrightnessSchedule (*.bjs)")); if(strBrightScheduleFile.isEmpty()) return; QFile fJson(strBrightScheduleFile); if(fJson.open(QIODevice::ReadOnly)){ QJsonDocument jBrightSchedule = QJsonDocument::fromJson(fJson.readAll()); QJsonObject oTaskBrightness=jBrightSchedule.object(); JieXiJsonTaskBrightness(oTaskBrightness); fJson.close(); } delete settings; } bool ControlBrightnessSchedule::JieXiJsonTaskBrightness(QJsonObject oTaskBrightness) { OnClickClear(); QJsonArray items; QString strDefaultBrightness=QString::number(oTaskBrightness["defaultBrightness"].toInt()); if(!strDefaultBrightness.isEmpty()) ui->lineEdit->setText(strDefaultBrightness); items=oTaskBrightness["items"].toArray(); //bool bHaveSchedule=false; for(int i=0;i Item; Item.append(new QStandardItem(QString::number(item["brightness"].toInt()))); Item.append(new QStandardItem(oSchedule["startTime"].toString())); Item.append(new QStandardItem(oSchedule["endTime"].toString())); Item.at(0)->setTextAlignment(Qt::AlignCenter); Item.at(1)->setTextAlignment(Qt::AlignCenter); Item.at(2)->setTextAlignment(Qt::AlignCenter); //m_lineEidt[i]->installEventFilter(this); //Item.at(0)->setdsetValidator(new QRegExpValidator(rx, this)); m_pModel->appendRow(Item); } if(items.count()>0) return true; else { return false; } } void ControlBrightnessSchedule::OnClickExport() { LoAppConfig *cfg = LoAppConfig::getInstance(); QSettings *settings = new QSettings(cfg->OrganizationName(), cfg->ApplicationName()); QString strDir="/"; if(settings->value("lasOpendFileDlgtDir").isValid()) { strDir=settings->value("lasOpendFileDlgtDir").toString(); } else { } QFileDialog dlg; QString saveFileName = dlg.getSaveFileName(this, tr("Save File"), strDir, tr("BrightnessSchedule (*.bjs)")); if( saveFileName.isEmpty() ) return; settings->setValue("lasOpendFileDlgtDir",saveFileName); QJsonObject oTaskBrightness=GetJsonObjectBrightnessSchedule(); QJsonDocument tBrightnessScheduleJsonDoc; tBrightnessScheduleJsonDoc.setObject(oTaskBrightness); QFile f(saveFileName); if(f.open(QIODevice::WriteOnly)) { f.write(tBrightnessScheduleJsonDoc.toJson()); f.close(); } delete settings; } void ControlBrightnessSchedule::OnClickDelete() { if(m_pModel->rowCount()>0) { QModelIndexList selected = ui->tableView->selectionModel()->selectedRows(0); if(selected.count()>0) m_pModel->removeRows(selected.begin()->row(),selected.count()); } } void ControlBrightnessSchedule:: OnClickClear() { //QModelIndexList selected = ui->tableView->selectionModel()->selectedRows(0); if(m_pModel->rowCount()>0) m_pModel->removeRows(0,m_pModel->rowCount()); } void ControlBrightnessSchedule::OnClickApply() { if(ui->lineEdit->text().isEmpty()) { X_UIMsgBoxOk *pDlg=new X_UIMsgBoxOk(tr("Tip"),tr("DefaultInputTip"),this,1); pDlg->exec(); ui->lineEdit->setFocus(); return; } if(m_pLedlist==nullptr) return; if(m_pLedlist->count()<=1) { if(m_pLedCard==nullptr||m_pLedlist->count()==0) { X_UIMsgBoxOk *pDlg=new X_UIMsgBoxOk(tr("Tip"),tr("NoSelectedController"),this,1); pDlg->exec(); return; } } QJsonObject json; json.insert("_id", getRandomString(10)); json.insert("_type", "SetAutoBrightnessTask"); QJsonObject oTaskBrightness=GetJsonObjectBrightnessSchedule(); json.insert("taskBrightness", oTaskBrightness); MACRO_DEFINE_TIPDLG_FUCN(tr("SetAutoBrightnessTask"),tr("Success"),tr("failed")) } void ControlBrightnessSchedule::OnClickReadback() { MACRO_DEFINE_NO_SELECTED_CARD_TIP QJsonObject json; json.insert("_id", getRandomString(10)); json.insert("_type", "GetAutoBrightnessTask"); MACRO_DEFINE_TIPDLG_FUCN(tr("GetAutoBrightnessTask"),tr("Success"),tr("failed")) } QJsonObject ControlBrightnessSchedule::GetJsonObjectBrightnessSchedule() { QJsonObject oTaskBrightness; QJsonArray oItems; oTaskBrightness["createDate"] = QJsonValue::Null; oTaskBrightness["createBy"] = "alahover"; oTaskBrightness["name"] = "TimingBrightness"; oTaskBrightness["defaultBrightness"] = ui->lineEdit->text().toInt(); oTaskBrightness["brightness"] = ui->lineEdit->text().toInt(); for(int i=0; irowCount(); i++) { QJsonObject oItem; oItem["brightness"] = m_pModel->data(m_pModel->index(i, 0)).toInt(); QJsonArray oSchedules; QJsonObject oSchedule; oSchedule["timeType"] = "Range"; oSchedule["startTime"] = m_pModel->data(m_pModel->index(i, 1)).toString();; oSchedule["endTime"] = m_pModel->data(m_pModel->index(i, 2)).toString();; oSchedule["dateType"] = "All"; oSchedule["startDate"] = QJsonValue::Null; oSchedule["endDate"] = QJsonValue::Null; oSchedule["monthFilter"] = QJsonArray(); oSchedule["filterType"] = "None"; oSchedule["weekFilter"] = QJsonArray(); oSchedules.append(oSchedule); oItem["schedules"] = oSchedules; oItems.append(oItem); } oTaskBrightness["items"] = oItems; return oTaskBrightness; } void ControlBrightnessSchedule::OnAddOneItem(QString strStartTime,QString strEndTime,int iBrightnessValue) { //int iIndex=m_pModel->rowCount(); // QStanardItem QList Item; Item.append(new QStandardItem(QString::number(iBrightnessValue))); Item.append(new QStandardItem(strStartTime)); Item.append(new QStandardItem(strEndTime)); Item.at(0)->setTextAlignment(Qt::AlignCenter); Item.at(1)->setTextAlignment(Qt::AlignCenter); Item.at(2)->setTextAlignment(Qt::AlignCenter); //m_lineEidt[i]->installEventFilter(this); //Item.at(0)->setdsetValidator(new QRegExpValidator(rx, this)); m_pModel->appendRow(Item); // ui->tableView->setModel(m_pModel); // } void ControlBrightnessSchedule::DeletePostingDlg() { if(m_PostingDlg!=nullptr) { delete m_PostingDlg; m_PostingDlg=nullptr; } }