#include "formwoolupload.h" #include "ui_formwoolupload.h" #include "xprogressbar.h" #include "sncdatabase.h" #include "dialogsubmitresponsedetail.h" #include "dialogsubmit.h" FormWoolUpload::FormWoolUpload(QWidget *parent) : QWidget(parent), ui(new Ui::FormWoolUpload) { ui->setupUi(this); initVariables(); initUI(); setTableWidgetNoData(ui->tableWidget); } FormWoolUpload::~FormWoolUpload() { m_movie->stop(); m_movieBig->stop(); delete m_movieBig; delete m_movie; delete ui; qDebug()<start(); m_movieBig = new QMovie(":/fetchfromserver.gif"); m_movieBig->start(); m_state = NotLogin; m_keys<<"fileid"<<"uploadstate"<<"filetype"<<"filename"<<"filepath"\ <<"memo"<<"srvrtime"<<"percent"<<"rtnmsg"<<"rtndetail"<<"optstatus"<<"isverify"<<"tftime"; m_headers<<""<<"状态"<<"文件类型"<<"文件名"<<"文件路径"<<"备注"\ <<"提交时间"<<"上传进度"<<"返回信息"<<"返回详情"<<"服务端操作状态"<<""<<""<<"返回详情"; } void FormWoolUpload::setAccountInfo(QMap info) { m_account = info; QString ssoHash = info.value("ssohash"); QString userCode = info.value("usercode"); QString userHash = info.value("ssohash"); if(!ssoHash.isEmpty()) { if(!userHash.isEmpty()) { m_state = LoginOk; setTableWidgetSyncData(ui->tableWidget); } else { if(!userCode.isEmpty()) { m_state = LoginError; } else { m_state = NotBind; } } } else { m_state = NotLogin; } if(m_state!=LoginOk) { setTableWidgetNoData(ui->tableWidget); } } void FormWoolUpload::setClientName(QString name) { m_clientName = name; } //void FormWoolUpload::setClientID(QString clientID) //{ // m_clientID = clientID; //} void FormWoolUpload::initUI() { ui->tableWidget->setColumnCount(m_headers.size()); ui->tableWidget->setHorizontalHeaderLabels(m_headers); ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->tableWidget->setShowGrid(false); ui->tableWidget->setAlternatingRowColors(true); ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); ui->tableWidget->verticalHeader()->setVisible(false); ui->tableWidget->horizontalHeader()->setStyleSheet("font:12px"); ui->tableWidget->horizontalHeader()->setResizeMode(QHeaderView::Fixed); ui->tableWidget->verticalHeader()->setResizeMode(QHeaderView::Fixed); ui->tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ui->tableWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); ui->tableWidget->verticalHeader()->setFixedWidth(30); ui->tableWidget->setSortingEnabled(true); ui->tableWidget->setColumnWidth(0,20); ui->tableWidget->setColumnWidth(1,30); ui->tableWidget->setColumnWidth(2,70);// ui->tableWidget->setColumnWidth(3,175); ui->tableWidget->setColumnWidth(4,0); ui->tableWidget->setColumnWidth(5,0);// ui->tableWidget->setColumnWidth(6,130); ui->tableWidget->setColumnWidth(7,170); ui->tableWidget->setColumnWidth(8,0); ui->tableWidget->setColumnWidth(9,0); ui->tableWidget->setColumnWidth(10,0); ui->tableWidget->setColumnWidth(11,0); ui->tableWidget->setColumnWidth(12,0); ui->tableWidget->setColumnWidth(13,79); this->setFixedHeight(170); } void FormWoolUpload::setTableWidgetNoData(QTableWidget *tableWidget) { prepareTableWidgetCells(tableWidget,3); tableWidget->setEnabled(false); QTableWidgetItem *item = new QTableWidgetItem(); item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter); item->setText(" 暂无信息"); tableWidget->setItem(1,6,item); } void FormWoolUpload::setTableWidgetSyncData(QTableWidget *tableWidget) { prepareTableWidgetCells(tableWidget,3); tableWidget->setEnabled(false); QLabel *lbl = new QLabel(); QTableWidgetItem *item = new QTableWidgetItem(" 正在读取..."); lbl->setMovie(m_movieBig); item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); tableWidget->setItem(1,6,item); tableWidget->setCellWidget(1,6,lbl); } void FormWoolUpload::prepareTableWidgetCells(QTableWidget *tableWidget, int rows) { tableWidget->setRowCount(0); tableWidget->setRowCount(rows); } void FormWoolUpload::fillDataList(QTableWidget *tableWidget,QStringList keys, QMultiMap list, int rowCount) { setTableWidgetNoData(tableWidget); if(rowCount==0) { return ; } prepareTableWidgetCells(tableWidget,rowCount); tableWidget->setEnabled(true); for(int row = 0;row < rowCount;row++) { QMap map; for(int col=0;colsetText("查看"); button->setProperty("class","txt-green"); button->setCursor(Qt::PointingHandCursor); connect(button,SIGNAL(clicked()),this,SLOT(onPushButtonViewsClicked())); QTableWidgetItem *item = tableWidget->item(row,8); if(item) { if(item->data(Qt::UserRole).toString().isEmpty()) { button->setEnabled(false); } } ui->tableWidget->setCellWidget(row,tableWidget->columnCount()-1,button); } tableWidget->sortByColumn(0); tableWidget->sortByColumn(0); } void FormWoolUpload::setCellElement(QTableWidget *tableWidget, int row, int col, QString key,QString value,QMap data) { QTableWidgetItem* item = new QTableWidgetItem(); QVariant display = value; QVariant tooltip = value; item->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter); //进行数据翻译 if(key == "filetype") { if(value=="1") display = "号码文件"; else if(value=="2") display = "号段文件"; else display = "未知"; tooltip = display; } else if(key=="fileid") { display = ""; tooltip = ""; item->setCheckState(Qt::Unchecked); } else if(key=="filename") { QString filePath = data.value("filepath"); QString fileMemo = data.value("memo"); tooltip = QString("文件:%1\r\n备注:%2").arg(filePath).arg(fileMemo); item->setTextAlignment(Qt::AlignLeft|Qt::AlignVCenter); } //设置单元格显示形式,是用item填充还是widget填充 if(key == "uploadstate") { delete item; int uploadstate = value.toInt(); QLabel *lbl = new QLabel(); lbl->setAlignment(Qt::AlignCenter|Qt::AlignHCenter); lbl->setProperty("value",uploadstate); if(uploadstate < 0 )//上传失败,发生了错误 { lbl->setPixmap(QPixmap(":/task_error.png")); lbl->setToolTip("上传失败,详细原因请点击查看按钮"); } else if(uploadstate>=0 && uploadstate<3)//等待上传或上传中 { lbl->setToolTip("正在上传,请稍候"); lbl->setMovie(m_movie); } else if(uploadstate>3)//未知状态 { lbl->setText("未知"); } else //(uploadstate == 3) { lbl->setPixmap(QPixmap(":/task_ok.png")); lbl->setToolTip("上传成功"); } tableWidget->setCellWidget(row,col,lbl); } else if(key=="percent") { delete item; int uploadstate = data.value("uploadstate").toInt(); double percent = value.toDouble(); QLabel *lbl = new QLabel(); lbl->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); XProgressBar *progress = 0; if(uploadstate<0) { lbl->setText("上传失败"); } else if(uploadstate>=0 && uploadstate<3)//等待上传或上传中 { delete lbl; lbl = 0; progress = new XProgressBar(); } else { lbl->setText("上传成功"); } if(lbl) { tableWidget->setCellWidget(row,col,lbl); } else { progress->setProgress(uploadstate,percent); tableWidget->setCellWidget(row,col,progress); } } else { item->setData(Qt::DisplayRole,display); item->setData(Qt::UserRole,value); item->setData(Qt::ToolTipRole,tooltip); tableWidget->setItem(row,col,item); } } void FormWoolUpload::query() { QString userCode = m_account.value("usercode"); QMultiMap list = SNCDataBase::getAllUpload("wool","",userCode); int cols = list.uniqueKeys().size(); int rows = 0; if(cols!=0) rows = list.size()/cols; if(list.size()==0) { setTableWidgetNoData(ui->tableWidget); return ; } QStringList ids; QString curId; for(int i=0;itableWidget->rowCount();i++) { QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { if(item->checkState()==Qt::Checked) { ids<data(Qt::UserRole).toString(); } if(item->isSelected()) { curId = item->data(Qt::UserRole).toString(); } } } fillDataList(ui->tableWidget,m_keys,list,rows); for(int i=0;itableWidget->rowCount();i++) { if(curId.isEmpty()) { ui->tableWidget->selectRow(i); ui->tableWidget->setFocus(); break; } QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { QString id = item->data(Qt::UserRole).toString(); if(curId==id) { ui->tableWidget->selectRow(i); ui->tableWidget->setFocus(); } for(int i=0;isetCheckState(Qt::Checked); break; } } } } } void FormWoolUpload::showRtnMessage(int row) { QTableWidgetItem *itemMsg = ui->tableWidget->item(row,8); QTableWidgetItem *itemDetail = ui->tableWidget->item(row,9); QString errMsg = ""; QString errDetail = ""; if(itemMsg) { errMsg = itemMsg->data(Qt::UserRole).toString(); } if(itemDetail) { errDetail = itemDetail->data(Qt::UserRole).toString(); } if(errDetail.isEmpty()) { if(!errMsg.isEmpty()) { QMessageBox::critical(this,"提示",errMsg,QMessageBox::Ok); } } else { DialogSubmitResponseDetail dialog; dialog.setDetailText(errDetail); dialog.exec(); } } void FormWoolUpload::on_pushButtonAddFile_clicked() { if(!chkAccountState(m_state)) return; QString userCode = m_account.value("usercode"); DialogSubmit dialog(this); connect(&dialog,SIGNAL(dataUpdated()),this,SLOT(onDataUpdated())); dialog.setUserCode(userCode); // dialog.setClientID(m_clientID); dialog.exec(); } void FormWoolUpload::onPushButtonViewsClicked() { QPushButton *btn = qobject_cast(sender()); for(int i=0;itableWidget->rowCount();i++) { QWidget *widget = ui->tableWidget->cellWidget(i,ui->tableWidget->columnCount()-1); if(widget) { if(btn==qobject_cast(widget)) { showRtnMessage(i); break; } } } } void FormWoolUpload::onDataUpdated() { query(); } void FormWoolUpload::on_checkBox_clicked() { Qt::CheckState state; state = ui->checkBox->checkState(); for(int i=0;itableWidget->rowCount();i++) { QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { item->setCheckState(state); } } } void FormWoolUpload::on_pushButtonDel_clicked() { if(!chkAccountState(m_state)) return ; bool nodata = true; for(int i=0;itableWidget->rowCount();i++) { QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { if(item->checkState()==Qt::Checked) { nodata = false; } } } if(nodata) { QMessageBox::critical(this,"提示","请选择要删除的单子",QMessageBox::Ok); return ; } /* for(int i=0;itableWidget->rowCount();i++) { QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { if(item->checkState()==Qt::Checked) { QWidget *widget = ui->tableWidget->cellWidget(i,1); if(widget) { QLabel *lbl = qobject_cast(widget); int state = lbl->property("value").toInt(); if(state>=0 && state<=2) { QMessageBox::critical(this,"提示","只能删除上传任务已经结束的单子!",QMessageBox::Ok); return ; } } } } }*/ for(int i=0;itableWidget->rowCount();i++) { QTableWidgetItem *item = ui->tableWidget->item(i,0); if(item) { if(item->checkState()==Qt::Checked) { int fileid = item->data(Qt::UserRole).toInt(); SNCDataBase::deleteFileByFileID(fileid); } } } query(); } void FormWoolUpload::on_tableWidget_cellDoubleClicked(int row, int column) { showRtnMessage(row); } bool FormWoolUpload::chkAccountState(AccountLoginState state) { bool ret = false; switch(state) { case NotLogin: QMessageBox::critical(this,"提示","您现在还没有登录系统,请登录后再操作!",QMessageBox::Ok); break; case NotBind: QMessageBox::critical(this,"提示","此项服务尚未开通,请开通后再操作!",QMessageBox::Ok); break; case LoginError: QMessageBox::critical(this,"提示","此项服务暂时无法连接,请稍候重试!",QMessageBox::Ok); break; default: ret = true; } return ret; }