#include "datalist_page.h"
|
#include "ui_datalist_page.h"
|
#include "DataForm/filecopydialog.h"
|
#include <QDateTime>
|
#include "CustomClass/mymessagebox.h"
|
#include <QDebug>
|
|
|
DataList_Page::DataList_Page(QWidget *parent,Work_Thread *workthread) :
|
custom_dialog(parent),
|
ui(new Ui::DataList_Page)
|
{
|
ui->setupUi(this);
|
|
work_thread = workthread;
|
|
initUi();
|
|
// set_btn_beep(ui->pushButton_name0,SIGNAL(pressed()));
|
// set_btn_beep(ui->pushButton_name1,SIGNAL(pressed()));
|
// set_btn_beep(ui->pushButton_name2,SIGNAL(pressed()));
|
// set_btn_beep(ui->pushButton_name3,SIGNAL(pressed()));
|
// set_btn_beep(ui->pushButton_name4,SIGNAL(pressed()));
|
// set_btn_beep(ui->pushButton_name5,SIGNAL(pressed()));
|
// set_btn_beep(ui->pushButton_name6,SIGNAL(pressed()));
|
// set_btn_beep(ui->pushButton_name7,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check0,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check1,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check2,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check3,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check4,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check5,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check6,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_check7,SIGNAL(pressed()));
|
|
set_btn_beep(ui->pushButton_CheckDischarge,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_CheckCharge,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_CheckAllSelect,SIGNAL(pressed()));
|
|
set_btn_beep(ui->pushButton_USB,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Delete,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_prepage,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_nextpage,SIGNAL(pressed()));
|
set_btn_beep(ui->pushButton_Exit,SIGNAL(pressed()));
|
|
// connect(ui->pushButton_name0,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
// connect(ui->pushButton_name1,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
// connect(ui->pushButton_name2,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
// connect(ui->pushButton_name3,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
// connect(ui->pushButton_name4,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
// connect(ui->pushButton_name5,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
// connect(ui->pushButton_name6,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
// connect(ui->pushButton_name7,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check0,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check1,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check2,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check3,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check4,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check5,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check6,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_check7,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
connect(ui->pushButton_CheckCharge,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_CheckDischarge,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_CheckAllSelect,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
connect(ui->pushButton_USB,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_Delete,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
connect(ui->pushButton_prepage,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_nextpage,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
connect(ui->pushButton_Exit,SIGNAL(released()),this,SLOT(DataBtnSlot()));
|
|
t_timer = new QTimer(this);
|
connect(t_timer,SIGNAL(timeout()),this,SLOT(SystemTime()));
|
|
}
|
|
DataList_Page::~DataList_Page()
|
{
|
delete ui;
|
delete t_timer;
|
}
|
|
void DataList_Page::showDataListPage()
|
{
|
initDataListButton();
|
|
set_MemoryRest();
|
|
updateDataNameList();
|
updateDataListButton();
|
|
SystemTime();
|
|
t_timer->start(500);
|
|
this->exec();
|
}
|
|
void DataList_Page::closeDataListPage()
|
{
|
t_timer->stop();
|
close();
|
}
|
|
void DataList_Page::SystemTime(void)
|
{
|
checkIcon();
|
|
QDateTime time = QDateTime::currentDateTime();//获取系统现在的时间
|
QString str = time.toString("yyyy-MM-dd hh:mm:ss"); //设置显示格式
|
ui->label_Time->setText(str);
|
|
if(1 == work_thread->remoteState.to_workpage){
|
closeDataListPage();
|
}
|
}
|
|
bool DataList_Page::isMemoryIsFull(void)
|
{
|
int filecount = FileManage::FindLocalFileFromPath(testDataDir,"*.FBO");
|
|
if((filecount+10) >= File_Count_Max)
|
{
|
return true;
|
}
|
|
return false;
|
}
|
|
void DataList_Page::set_MemoryRest()
|
{
|
int filecount = fileManage.FindLocalFileFromPath(testDataDir,"*.FBO");
|
|
float rest_per = filecount;
|
rest_per /= File_Count_Max;
|
rest_per = 1-rest_per;
|
|
//qDebug("filecount = %d,rest_per = %f",filecount,rest_per);
|
|
if((filecount+10) >= File_Count_Max)
|
{
|
ui->label_testing->setText(tr("存储已满"));
|
}
|
else if(rest_per < 0.4)
|
{
|
ui->label_testing->setText(tr("存储余量:")+QString::number(rest_per*100,'f',1)+"%");
|
}
|
}
|
|
|
void DataList_Page::checkIcon()
|
{
|
if(work_thread->iconState.usbState)
|
ui->label_USB->setPixmap(QPixmap(":new/prefix1/usb.png"));
|
else
|
{
|
ui->label_USB->setPixmap(QPixmap(""));
|
}
|
}
|
|
|
void DataList_Page::DataBtnSlot()
|
{
|
QPushButton *pb = dynamic_cast<QPushButton*>(sender());
|
if(ui->pushButton_Exit == pb)
|
{
|
closeDataListPage();
|
}
|
else if(ui->pushButton_prepage == pb)
|
{
|
currentDataPageIndex--;
|
|
for(int i=0;i<8;i++)
|
{
|
if(checkFlag[i])
|
checkFlag[i] = !checkFlag[i];
|
}
|
|
checkedAllSelect = false;
|
|
updateDataListButton();
|
}
|
else if(ui->pushButton_nextpage == pb)
|
{
|
currentDataPageIndex++;
|
|
for(int i=0;i<8;i++)
|
{
|
if(checkFlag[i])
|
checkFlag[i] = !checkFlag[i];
|
}
|
|
checkedAllSelect = false;
|
|
updateDataListButton();
|
}
|
else if(listNameButton[0] == pb || listNameButton[1] == pb
|
|| listNameButton[2] == pb || listNameButton[3] == pb
|
|| listNameButton[4] == pb || listNameButton[5] == pb
|
|| listNameButton[6] == pb || listNameButton[7] == pb)
|
{
|
;
|
}
|
else if(listCheckButton[0] == pb || listCheckButton[1] == pb
|
|| listCheckButton[2] == pb || listCheckButton[3] == pb
|
|| listCheckButton[4] == pb || listCheckButton[5] == pb
|
|| listCheckButton[6] == pb || listCheckButton[7] == pb)
|
{
|
/*
|
for(int i=0;i<8;i++)
|
{
|
if(listCheckButton[i] == pb)
|
{
|
checkFlag[i] = !checkFlag[i];
|
if(!checkFlag[i])
|
{
|
checkedAllSelect = false;
|
}
|
}
|
}
|
*/
|
checkedAllSelect = true;
|
for(int i=0;i<dataNumOnCurrentPage;i++)
|
{
|
if(listCheckButton[i] == pb)
|
{
|
checkFlag[i] = !checkFlag[i];
|
}
|
|
if(!checkFlag[i])
|
{
|
checkedAllSelect = false;
|
}
|
}
|
|
updateDataListButton();
|
}
|
else if(ui->pushButton_CheckDischarge == pb)
|
{
|
checkedDischarge = !checkedDischarge;
|
currentDataPageIndex = 1;
|
for(int i=0;i<8;i++)
|
{
|
checkFlag[i] = false;
|
}
|
updateDataNameList();
|
updateDataListButton();
|
}
|
else if(ui->pushButton_CheckCharge == pb)
|
{
|
checkedCharge = !checkedCharge;
|
currentDataPageIndex = 1;
|
for(int i=0;i<8;i++)
|
{
|
checkFlag[i] = false;
|
}
|
updateDataNameList();
|
updateDataListButton();
|
}
|
else if(ui->pushButton_CheckAllSelect == pb)
|
{
|
checkedAllSelect = !checkedAllSelect;
|
|
for(int i=0;i<8;i++)
|
{
|
checkFlag[i] = checkedAllSelect;
|
}
|
|
updateDataListButton();
|
}
|
else if(ui->pushButton_USB == pb)
|
{
|
usbSaveCheckData();
|
}
|
else if(ui->pushButton_Delete == pb)
|
{
|
deleteCheckData();
|
}
|
}
|
|
QStringList DataList_Page::getCheckDataList()
|
{
|
QStringList nlst;
|
|
for(int i=0;i<8;i++)
|
{
|
if(checkFlag[i])
|
{
|
nlst.append(testDataDir+listNameButton[i]->text());
|
}
|
}
|
|
return nlst;
|
}
|
|
void DataList_Page::usbSaveCheckData()
|
{
|
if(0 == work_thread->iconState.usbState)
|
{
|
popBox(tr("U盘不存在!"));
|
return;
|
}
|
|
QDir dir;
|
if(!(dir.exists(usbDir+USBDataDir)))
|
{
|
if(false == dir.mkdir(usbDir+USBDataDir))
|
{
|
popBox(tr("创建‘数据文件夹’失败!"));
|
return;
|
}
|
}
|
|
FileCopyDialog fcd;
|
QStringList sl = getCheckDataList();
|
|
//fcd.CopyFiles(sl,usbDir+USBDataDir,true);
|
bool ret = fcd.CopyFiles(sl,usbDir+USBDataDir,true);
|
|
if(ret)
|
popBox(tr("转存完成!"));
|
else
|
popBox(tr("转存失败!"));
|
}
|
|
void DataList_Page::deleteCheckData()
|
{
|
QStringList cd = getCheckDataList();
|
//QString fn;
|
|
MessageBox box(this,tr("确定删除选中的文件吗?"),MessageBox::Yes|MessageBox::No,work_thread);
|
|
if(box.exec()==MessageBox::Yes){
|
/*
|
for(int i=0;i<cd.length();i++)
|
{
|
fn = cd.at(i);
|
fileManage.removeFile(testDataDir, fn);
|
//qDebug()<<testDataDir<<fn << ret;
|
}
|
*/
|
FileCopyDialog fcd;
|
|
bool ret = fcd.DeleteFiles(cd);
|
|
if(ret)
|
popBox(tr("删除完成!"));
|
else
|
popBox(tr("删除失败!"));
|
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
if(checkedAllSelect && currentDataPageIndex==pageNum){
|
if(currentDataPageIndex>1){
|
currentDataPageIndex -= 1;
|
}
|
}
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
for(int i=0;i<8;i++)
|
{
|
checkFlag[i] = false;
|
}
|
|
checkedAllSelect = false;
|
|
updateDataNameList();
|
updateDataListButton();
|
}
|
}
|
|
void DataList_Page::initUi()
|
{
|
listNameButton[0] = ui->pushButton_name0;
|
listNameButton[1] = ui->pushButton_name1;
|
listNameButton[2] = ui->pushButton_name2;
|
listNameButton[3] = ui->pushButton_name3;
|
listNameButton[4] = ui->pushButton_name4;
|
listNameButton[5] = ui->pushButton_name5;
|
listNameButton[6] = ui->pushButton_name6;
|
listNameButton[7] = ui->pushButton_name7;
|
listCheckButton[0] = ui->pushButton_check0;
|
listCheckButton[1] = ui->pushButton_check1;
|
listCheckButton[2] = ui->pushButton_check2;
|
listCheckButton[3] = ui->pushButton_check3;
|
listCheckButton[4] = ui->pushButton_check4;
|
listCheckButton[5] = ui->pushButton_check5;
|
listCheckButton[6] = ui->pushButton_check6;
|
listCheckButton[7] = ui->pushButton_check7;
|
}
|
|
void DataList_Page::initDataListButton()
|
{
|
currentDataPageIndex = 1;
|
|
ui->pushButton_USB->setEnabled(false);
|
ui->pushButton_Delete->setEnabled(false);
|
|
checkedDischarge = false;
|
checkedCharge = false;
|
checkedCycle = false;
|
checkedAllSelect = false;
|
|
for(int i=0;i<8;i++)
|
{
|
checkFlag[i] = false;
|
}
|
|
dataAllShow = true;
|
}
|
|
void DataList_Page::updateDataListButton()
|
{
|
nameNum = nameList.count();
|
|
//int dataNumOnCurrentPage; //当前页数据数量
|
if(nameNum>DataNumEachPage*currentDataPageIndex)
|
dataNumOnCurrentPage = DataNumEachPage;
|
else
|
dataNumOnCurrentPage = nameNum-DataNumEachPage*(currentDataPageIndex-1);
|
for(int i=0;i<DataNumEachPage;i++)
|
{
|
listNameButton[i]->setEnabled(false);
|
listNameButton[i]->setText("");
|
|
listCheckButton[i]->setEnabled(false);
|
listCheckButton[i]->setIcon(QIcon(""));
|
}
|
|
int checkCount = 0;
|
|
for(int i=0;i<dataNumOnCurrentPage;i++)
|
{
|
listNameButton[i]->setEnabled(true);
|
listNameButton[i]->setText(nameList.at(i+DataNumEachPage*(currentDataPageIndex-1)));
|
|
listCheckButton[i]->setEnabled(true);
|
if(checkFlag[i]) //|| checkedAllSelect)
|
{
|
checkCount++;
|
listCheckButton[i]->setIcon(QIcon(":new/prefix1/check.png"));
|
}
|
else
|
listCheckButton[i]->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
|
if(currentDataPageIndex>1)
|
ui->pushButton_prepage->setEnabled(true);
|
else
|
ui->pushButton_prepage->setEnabled(false);
|
if(nameNum>DataNumEachPage*currentDataPageIndex)
|
ui->pushButton_nextpage->setEnabled(true);
|
else
|
ui->pushButton_nextpage->setEnabled(false);
|
|
if(nameNum%DataNumEachPage == 0)
|
pageNum = nameNum/DataNumEachPage;
|
else
|
pageNum = (nameNum/DataNumEachPage)+1;
|
if(pageNum<1)
|
pageNum = 1;
|
ui->label_page->setText(QString::number(currentDataPageIndex)
|
+" / "+QString::number(pageNum)+tr(" 页"));
|
|
if(checkCount==0)
|
{
|
ui->pushButton_USB->setEnabled(false);
|
ui->pushButton_Delete->setEnabled(false);
|
}
|
else
|
{
|
ui->pushButton_USB->setEnabled(true);
|
ui->pushButton_Delete->setEnabled(true);
|
}
|
|
if(checkedDischarge)
|
ui->pushButton_CheckDischarge->setIcon(QIcon(":new/prefix1/check.png"));
|
else
|
ui->pushButton_CheckDischarge->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
|
if(checkedCharge)
|
ui->pushButton_CheckCharge->setIcon(QIcon(":new/prefix1/check.png"));
|
else
|
ui->pushButton_CheckCharge->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
|
if(checkedAllSelect)
|
ui->pushButton_CheckAllSelect->setIcon(QIcon(":new/prefix1/check.png"));
|
else
|
ui->pushButton_CheckAllSelect->setIcon(QIcon(":new/prefix1/uncheck.png"));
|
}
|
|
void DataList_Page::updateDataNameList()
|
{
|
QStringList tmpNameList;
|
tmpNameList = fileManage.getFiles(testDataDir);
|
nameList.clear();
|
|
if(!checkedDischarge && !checkedCharge)
|
{
|
dataAllShow = true;
|
}
|
|
if(dataAllShow) //全部数据
|
{
|
nameList = tmpNameList;
|
dataAllShow = false;
|
}
|
else
|
{
|
for(int i=0;i<tmpNameList.count();i++)
|
{
|
QString fn = tmpNameList.at(i);
|
//qDebug()<<fn;
|
|
TEST_DATA_INFO data_info;
|
ClassXML::AnalysisFBOHead(testDataDir+fn,data_info);
|
|
if(checkedDischarge) //放电数据
|
{
|
if(data_info.fbo_data_head_start.DataType == TestTypeDischarge)
|
{
|
nameList.append(fn);
|
}
|
}
|
|
if(checkedCharge) //充电数据
|
{
|
if(data_info.fbo_data_head_start.DataType == TestTypeCharge)
|
{
|
nameList.append(fn);
|
}
|
}
|
}
|
}
|
}
|
|
void DataList_Page::popBox(QString msg)
|
{
|
MessageBox box(this,msg,MessageBox::Ok,work_thread);
|
box.exec();
|
}
|