#include "DialogFileOperation.h" #include "ui_dialogfileoperation.h" #include #include #include #include #include #include #include #include #include #include #include #include #include"HtmlDelegate.h" #include"myinclude.h" #include #include DialogFileOperation::DialogFileOperation(QWidget *parent) : QDialog(parent), ui(new Ui::DialogFileOperation) { ui->setupUi(this); this->setWindowTitle(tr("文件操作")); ui->textEditView->setReadOnly(true); ui->textEditView->setLineWrapMode(QTextEdit::NoWrap); ui->textEditView->document()->setDocumentMargin(0); this->setFixedSize(this->geometry().width(),this->geometry().height()); EditMode=4; } void DialogFileOperation::refreshListView(int mode){ QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; QDir dir(dirPath); QStringList filters; EditMode = mode; if(mode==TXTFILE) filters << "*.html" << "*.txt" << "*.TXT" << "*.jpeg" << "*.gif" << "*.jpg" << "*.bmp"<< "*.BMP"<< "*.bin"; // txtmode // else if(mode==PICFILE) filters << "*.png";// <<"*.jpg" ; // picmode else if(mode==PICFILE) filters << "*.png" << "*.jpeg" << "*.gif" << "*.jpg" << "*.bmp"<< "*.BMP"; else if(mode==SCENE) filters << "*.xml"; else filters << "*.html" << "*.bmp" << "*.BMP"<<"*.jpg"<<"*.gif"; dir.setNameFilters(filters); dir.setFilter(QDir::Files); #ifndef EnableArabic QStringListModel *model = new QStringListModel(dir.entryList()); #else QStringList entries=dir.entryList(); QStandardItemModel *model = new QStandardItemModel(); for(int i=0;i%1%2").arg(subname).arg(subsuffix2); QStandardItem *item2 = new QStandardItem(stringhtml); model->appendRow(item2); } }else{ model->appendRow(item1); } } } ui->listViewFile->setItemDelegate(new HtmlDelegate); #endif ui->listViewFile->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->listViewFile->setModel(model); //useList是个QListView int count = ui->listViewFile->model()->rowCount(); if(count){ QModelIndex index = ui->listViewFile->model()->index(0 , 0); ui->listViewFile->setCurrentIndex(index); on_listViewFile_entered(index); } } DialogFileOperation::~DialogFileOperation() { delete ui; } void DialogFileOperation::on_listViewFile_entered(const QModelIndex &index) { #ifdef EnableArabic QString fileName=index.data().toString(); if(fileName.endsWith("")){ QTextDocument doc; doc.setHtml(fileName); fileName= doc.toPlainText(); int position = fileName.lastIndexOf("."); fileName.insert(position,".a"); } #endif QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; #ifndef EnableArabic QString filePath = dirPath + index.data().toString(); #else QString filePath = dirPath + fileName; #endif if(filePath.endsWith(".gif") || filePath.endsWith(".jpeg") || filePath.endsWith(".jpg") || filePath.endsWith(".png") || filePath.endsWith(".bmp")|| filePath.endsWith(".BMP")|| filePath.endsWith(".nda")){ ui->textEditView->clear(); ui->textEditView->setHtml(QString("").arg(filePath)); } else if(filePath.endsWith(".xml")) { emit createSceneImage(filePath); ui->textEditView->setHtml(QString("").arg("./printSceneView.png")); } else { QFile file(filePath); if (!file.open(QFile::ReadOnly)) return ; if (filePath.endsWith(".txt") || filePath.endsWith(".TXT")) { qint64 size = file.size(); if(size/1024 > 10) { return; } } QByteArray data = file.readAll(); QTextCodec *codec = Qt::codecForHtml(data); QString str = codec->toUnicode(data); if (Qt::mightBeRichText(str)) { if(!ui->radioButtonLocal->isChecked()) str.replace(DOC_ROOT_DIR,UDISK_DOC_ROOT_DIR); //必须替换相应的路径 ui->textEditView->setHtml(str); } else { str = QString::fromLocal8Bit(data); ui->textEditView->setPlainText(str); } } } void DialogFileOperation::on_listViewFile_clicked(const QModelIndex &index) { on_listViewFile_entered(index); } void DialogFileOperation::on_pushButtonNext_pressed() { QModelIndex currIndex = ui->listViewFile->currentIndex(); int count = ui->listViewFile->model()->rowCount(); if(count){ QModelIndex index = ui->listViewFile->model()->index((currIndex.row() + 1)%count, 0); ui->listViewFile->setCurrentIndex(index); on_listViewFile_entered(index); } } void DialogFileOperation::on_pushButtonLast_pressed() { QModelIndex currIndex = ui->listViewFile->currentIndex(); int count = ui->listViewFile->model()->rowCount(); if(count){ QModelIndex index = ui->listViewFile->model()->index(currIndex.row() == 0?(count - 1):(currIndex.row() - 1), 0); ui->listViewFile->setCurrentIndex(index); on_listViewFile_entered(index); } } void DialogFileOperation::on_pushButtonExit_pressed() { hide(); } void DialogFileOperation::on_pushButtonDelFile_pressed() { QMessageBox::StandardButton ret; ret = QMessageBox::warning(this, tr("警告"), tr("是否确认删除当前文件?"), QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok){ QModelIndex index = ui->listViewFile->currentIndex(); int currRow = index.row(); QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; #ifndef EnableArabic QString filePath = dirPath + index.data().toString(); #else QString fileName=index.data().toString(); if(fileName.endsWith("")){ QTextDocument doc; doc.setHtml(fileName); fileName= doc.toPlainText(); int position = fileName.lastIndexOf("."); fileName.insert(position,".a"); } QString filePath=dirPath+fileName; #endif QFile file(filePath); if(!QFileInfo(filePath).baseName().startsWith("UP")){ if(file.exists())file.remove(); file.setFileName(PARA_ROOT_DIR + QFileInfo(filePath).baseName()+".dpn" ); //file.setFileName( PARA_ROOT_DIR + QFileInfo(filePath).baseName()+".dpn" ); if(file.exists())file.remove(); } //Public::resetPara(); // 20140923 这个BUG导致系统参数被恢复 refreshListView(EditMode); int count = ui->listViewFile->model()->rowCount(); if(count){ index = ui->listViewFile->model()->index((currRow > (count - 1))?(count - 1):currRow , 0); ui->listViewFile->setCurrentIndex(index); on_listViewFile_entered(index); } } } void DialogFileOperation::on_pushButtonDelAll_pressed() { QMessageBox::StandardButton ret; ret = QMessageBox::warning(this, tr("警告"), tr("是否确认删除所有文件?"), QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok){ QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; // 删除所有文件的方法要改进 system((char *)((QString("mkdir %1").arg(TESTDIR)).toLatin1().data())); system((char *)((QString("cp %1/UP* %2/. ").arg(DOC_ROOT_DIR).arg(TESTDIR)).toLatin1().data())); //先备份UP* system((char *)((QString("rm %1/*.*").arg(dirPath)).toLatin1().data()));// 删除所有打印文件 system((char *)((QString("rm %1*.ini").arg(PARA_ROOT_DIR)).toLatin1().data())); // 删除所有参数文件 system((char *)((QString("rm %1*.dpn").arg(PARA_ROOT_DIR)).toLatin1().data())); system((char *)((QString("cp %1/UP.* %1/UP1.* %2/. ").arg(TESTDIR).arg(DOC_ROOT_DIR)).toLatin1().data())); //system((char *)((QString("cp %1* %2/. ").arg(TESTDIR).arg(PARA_ROOT_DIR)).toLatin1().data())); refreshListView(EditMode); } } void DialogFileOperation::on_pushButtonImport_pressed() { QMessageBox::StandardButton ret; ret = QMessageBox::information(this, tr("提示"), tr("是否确认从U盘导入所有文件?"), QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok){ system((char *)((tr("mv %1/VoltParaHi.bin %1/VoltParaStd.bin %2/").arg(UDISK_DOC_ROOT_DIR).arg(PARA_ROOT_DIR)).toLatin1().data()));//把参数文件移动到参数目录下 system((char *)((tr("cp %1/* %2/").arg(UDISK_DOC_ROOT_DIR).arg(DOC_ROOT_DIR)).toLatin1().data())); refreshListView(EditMode); QMessageBox::information(this, tr("提示"), tr("成功从U盘导入?")); } } void DialogFileOperation::on_pushButtonExport_pressed() { QMessageBox::StandardButton ret; ret = QMessageBox::information(this, tr("提示"), tr("是否确认将所有文件导出到U盘?"), QMessageBox::Ok | QMessageBox::Cancel); if (ret == QMessageBox::Ok){ QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; QDir dir(UDISK_DOC_ROOT_DIR); if(!dir.exists()){ // system((char *)((QString("mkdir -p %1").arg(UDISK_DOC_ROOT_DIR)).toLatin1().data())); system((char *)((QString("mkdir -p %1").arg(UDISK_DOC_ROOT_DIR)).toLocal8Bit().data())); } if(!dir.exists()){ QMessageBox::warning(this,tr("警告"),tr("U盘doc目录创建失败")); return; } // QDir dirCONF(UDISK_CONF_ROOT_DIR); // if(!dirCONF.exists()){ // system((char *)((QString("mkdir -p %1").arg(UDISK_CONF_ROOT_DIR)).toLatin1().data())); // } // system((char *)((QString("cp %1/* %2/").arg(DOC_ROOT_DIR).arg(UDISK_DOC_ROOT_DIR)).toLatin1().data())); system((char *)((QString("cp %1/* %2/").arg(DOC_ROOT_DIR).arg(UDISK_DOC_ROOT_DIR)).toLocal8Bit().data())); // system((char *)((QString("cp %1/* %2/").arg("/home/plg/conf/").arg(UDISK_CONF_ROOT_DIR)).toLatin1().data())); system("sync"); refreshListView(EditMode); QMessageBox::information(this, tr("提示"), tr("成功导出到U盘?")); } } void DialogFileOperation::on_pushButtonInsert_clicked() { QModelIndex index = ui->listViewFile->currentIndex(); QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; #ifndef EnableArabic QString filePath = dirPath + index.data().toString(); #else QString fileName=index.data().toString(); if(fileName.endsWith("")){ QTextDocument doc; doc.setHtml(fileName); fileName= doc.toPlainText(); int position = fileName.lastIndexOf("."); fileName.insert(position,".a"); } QString filePath = dirPath + fileName; #endif emit openFile(filePath,true); hide(); } void DialogFileOperation::on_pushButtonOpen_clicked() { QModelIndex index = ui->listViewFile->currentIndex(); QString dirPath = ui->radioButtonLocal->isChecked()?DOC_ROOT_DIR:UDISK_DOC_ROOT_DIR; #ifndef EnableArabic QString filePath = dirPath + index.data().toString(); #else QString fileName=index.data().toString(); if(fileName.endsWith("")){ QTextDocument doc; doc.setHtml(fileName); fileName= doc.toPlainText(); int position = fileName.lastIndexOf("."); fileName.insert(position,".a"); } QString filePath = dirPath + fileName; #endif emit openFile(filePath,false); hide(); } void DialogFileOperation::on_radioButtonLocal_released() { refreshListView(EditMode); } void DialogFileOperation::on_radioButtonUdisk_released() { QDir dir(UDISK_DOC_ROOT_DIR); if(!dir.exists()){ dir.mkdir("/udisk/doc"); QMessageBox::warning(0,tr("警告"),tr("U盘未插入或U盘根目录下的doc文件夹不存在!")); } refreshListView(EditMode); } void DialogFileOperation::modbus_openfile(QString filename) { emit openFile(filename,true); }