Revert "hlp:荆州版本"

This reverts commit 065b146998.
This commit is contained in:
kite_lucs
2026-10-19 17:48:03 +08:00
parent 065b146998
commit baa8882d09
438 changed files with 185387 additions and 163143 deletions
+427 -427
View File
@@ -1,427 +1,427 @@
#include "DialogFileOperation.h"
#include "ui_dialogfileoperation.h"
#include <QDir>
#include <QStringListModel>
#include <SysPara.h>
#include <QAbstractItemView>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <Public.h>
#include <QTextCodec>
#include <QByteArray>
#include <QDebug>
#include <QProcess>
#include<QStandardItemModel>
#include"HtmlDelegate.h"
#include"myinclude.h"
#include<iostream>
#include<string>
#include "LogInfo.h"
// 递归复制目录/文件。true 表示全部成功,false 表示有失败
static bool copyRecursively(const QString &srcPath, const QString &dstPath)
{
QFileInfo srcInfo(srcPath);
if (!srcInfo.exists()) return false;
if (srcInfo.isDir()) {
QDir dstDir(dstPath);
if (!dstDir.exists()) {
if (!QDir().mkpath(dstPath)) return false;
}
QDir srcDir(srcPath);
QFileInfoList entries = srcDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries);
for (const QFileInfo &fi : entries) {
QString src = fi.absoluteFilePath();
QString dst = QDir(dstPath).filePath(fi.fileName());
if (!copyRecursively(src, dst)) return false;
}
return true;
} else {
// 文件
if (QFile::exists(dstPath)) {
QFile::remove(dstPath);
}
return QFile::copy(srcPath, dstPath);
}
}
// 只复制 srcDirPath 根目录下的文件(不递归到子目录)。true 表示全部成功,false 表示有失败或源目录不存在
static bool copyFilesOneLevel(const QString &srcDirPath, const QString &dstDirPath)
{
QDir srcDir(srcDirPath);
if (!srcDir.exists()) return false;
QDir dstDir(dstDirPath);
if (!dstDir.exists()) {
if (!QDir().mkpath(dstDirPath)) return false;
}
QFileInfoList files = srcDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot);
bool allOk = true;
for (const QFileInfo &fi : files) {
QString src = fi.absoluteFilePath();
QString dst = dstDir.filePath(fi.fileName());
if (QFile::exists(dst)) QFile::remove(dst);
if (!QFile::copy(src, dst)) {
LogInfo::setRunStatusText(QString("Copy file failed: %1 -> %2").arg(src).arg(dst));
allOk = false;
}
}
return allOk;
}
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<entries.size();i++){
//qDebug()<<"entries:"<<entries.at(i);
QStandardItem *item1 = new QStandardItem(entries.at(i));
int lastIndex=entries.at(i).lastIndexOf(".");
if(lastIndex != -1){
int secondLastIndex = entries.at(i).lastIndexOf(".",lastIndex-1);
if(secondLastIndex != -1){
QString subsuffix=entries.at(i).mid(secondLastIndex);
if(subsuffix.contains(".a.")){
QString subsuffix2=entries.at(i).mid(lastIndex);
QString subname=entries.at(i).mid(0,secondLastIndex);
QString stringhtml=QString("<span style=font-family:'biyangarabic';>%1</span><span style=font-family:'biyang';>%2</span>").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("</span>")){
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("<img src='%1'/>").arg(filePath));
}
else if(filePath.endsWith(".xml"))
{
emit createSceneImage(filePath);
ui->textEditView->setHtml(QString("<img src='%1'/>").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("</span>")){
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){
bool ok = true;
// 拷贝参数文件
QString srcHi = QDir(UDISK_DOC_ROOT_DIR).filePath("VoltParaHi.bin");
QString dstHi = QDir(PARA_ROOT_DIR).filePath("VoltParaHi.bin");
if (QFile::exists(srcHi)) {
if (QFile::exists(dstHi)) QFile::remove(dstHi);
if (!QFile::copy(srcHi, dstHi)) {
LogInfo::setRunStatusText("Copy VoltParaHi.bin failed");
ok = false;
}
}
QString srcStd = QDir(UDISK_DOC_ROOT_DIR).filePath("VoltParaStd.bin");
QString dstStd = QDir(PARA_ROOT_DIR).filePath("VoltParaStd.bin");
if (QFile::exists(srcStd)) {
if (QFile::exists(dstStd)) QFile::remove(dstStd);
if (!QFile::copy(srcStd, dstStd)) {
LogInfo::setRunStatusText("Copy VoltParaStd.bin failed");
ok = false;
}
}
// 复制 U 盘文档到本地(仅复制一级文件,不递归)
bool cpOk = copyFilesOneLevel(UDISK_DOC_ROOT_DIR, DOC_ROOT_DIR);
qDebug() << "copyRecursively import result:" << cpOk;
QProcess::execute("sync");
refreshListView(EditMode);
if (ok && cpOk) {
QMessageBox::information(this, tr("提示"), tr("成功从U盘导入"));
} else {
QMessageBox::warning(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()){
if (!QDir().mkpath(UDISK_DOC_ROOT_DIR)){
QMessageBox::warning(this,tr("警告"),tr("U盘doc目录创建失败"));
return;
}
}
// 仅复制本地文档根目录下的文件到 U 盘(不递归)
bool ok = copyFilesOneLevel(DOC_ROOT_DIR, UDISK_DOC_ROOT_DIR);
QProcess::execute("sync");
refreshListView(EditMode);
if (ok) {
QMessageBox::information(this, tr("提示"), tr("成功导出到U盘"));
} else {
QMessageBox::warning(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("</span>")){
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("</span>")){
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);
}
#include "DialogFileOperation.h"
#include "ui_dialogfileoperation.h"
#include <QDir>
#include <QStringListModel>
#include <SysPara.h>
#include <QAbstractItemView>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <Public.h>
#include <QTextCodec>
#include <QByteArray>
#include <QDebug>
#include <QProcess>
#include<QStandardItemModel>
#include"HtmlDelegate.h"
#include"myinclude.h"
#include<iostream>
#include<string>
#include "LogInfo.h"
// 递归复制目录/文件。true 表示全部成功,false 表示有失败
static bool copyRecursively(const QString &srcPath, const QString &dstPath)
{
QFileInfo srcInfo(srcPath);
if (!srcInfo.exists()) return false;
if (srcInfo.isDir()) {
QDir dstDir(dstPath);
if (!dstDir.exists()) {
if (!QDir().mkpath(dstPath)) return false;
}
QDir srcDir(srcPath);
QFileInfoList entries = srcDir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries);
for (const QFileInfo &fi : entries) {
QString src = fi.absoluteFilePath();
QString dst = QDir(dstPath).filePath(fi.fileName());
if (!copyRecursively(src, dst)) return false;
}
return true;
} else {
// 文件
if (QFile::exists(dstPath)) {
QFile::remove(dstPath);
}
return QFile::copy(srcPath, dstPath);
}
}
// 只复制 srcDirPath 根目录下的文件(不递归到子目录)。true 表示全部成功,false 表示有失败或源目录不存在
static bool copyFilesOneLevel(const QString &srcDirPath, const QString &dstDirPath)
{
QDir srcDir(srcDirPath);
if (!srcDir.exists()) return false;
QDir dstDir(dstDirPath);
if (!dstDir.exists()) {
if (!QDir().mkpath(dstDirPath)) return false;
}
QFileInfoList files = srcDir.entryInfoList(QDir::Files | QDir::NoDotAndDotDot);
bool allOk = true;
for (const QFileInfo &fi : files) {
QString src = fi.absoluteFilePath();
QString dst = dstDir.filePath(fi.fileName());
if (QFile::exists(dst)) QFile::remove(dst);
if (!QFile::copy(src, dst)) {
LogInfo::setRunStatusText(QString("Copy file failed: %1 -> %2").arg(src).arg(dst));
allOk = false;
}
}
return allOk;
}
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<entries.size();i++){
//qDebug()<<"entries:"<<entries.at(i);
QStandardItem *item1 = new QStandardItem(entries.at(i));
int lastIndex=entries.at(i).lastIndexOf(".");
if(lastIndex != -1){
int secondLastIndex = entries.at(i).lastIndexOf(".",lastIndex-1);
if(secondLastIndex != -1){
QString subsuffix=entries.at(i).mid(secondLastIndex);
if(subsuffix.contains(".a.")){
QString subsuffix2=entries.at(i).mid(lastIndex);
QString subname=entries.at(i).mid(0,secondLastIndex);
QString stringhtml=QString("<span style=font-family:'biyangarabic';>%1</span><span style=font-family:'biyang';>%2</span>").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("</span>")){
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("<img src='%1'/>").arg(filePath));
}
else if(filePath.endsWith(".xml"))
{
emit createSceneImage(filePath);
ui->textEditView->setHtml(QString("<img src='%1'/>").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("</span>")){
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){
bool ok = true;
// 拷贝参数文件
QString srcHi = QDir(UDISK_DOC_ROOT_DIR).filePath("VoltParaHi.bin");
QString dstHi = QDir(PARA_ROOT_DIR).filePath("VoltParaHi.bin");
if (QFile::exists(srcHi)) {
if (QFile::exists(dstHi)) QFile::remove(dstHi);
if (!QFile::copy(srcHi, dstHi)) {
LogInfo::setRunStatusText("Copy VoltParaHi.bin failed");
ok = false;
}
}
QString srcStd = QDir(UDISK_DOC_ROOT_DIR).filePath("VoltParaStd.bin");
QString dstStd = QDir(PARA_ROOT_DIR).filePath("VoltParaStd.bin");
if (QFile::exists(srcStd)) {
if (QFile::exists(dstStd)) QFile::remove(dstStd);
if (!QFile::copy(srcStd, dstStd)) {
LogInfo::setRunStatusText("Copy VoltParaStd.bin failed");
ok = false;
}
}
// 复制 U 盘文档到本地(仅复制一级文件,不递归)
bool cpOk = copyFilesOneLevel(UDISK_DOC_ROOT_DIR, DOC_ROOT_DIR);
qDebug() << "copyRecursively import result:" << cpOk;
QProcess::execute("sync");
refreshListView(EditMode);
if (ok && cpOk) {
QMessageBox::information(this, tr("提示"), tr("成功从U盘导入"));
} else {
QMessageBox::warning(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()){
if (!QDir().mkpath(UDISK_DOC_ROOT_DIR)){
QMessageBox::warning(this,tr("警告"),tr("U盘doc目录创建失败"));
return;
}
}
// 仅复制本地文档根目录下的文件到 U 盘(不递归)
bool ok = copyFilesOneLevel(DOC_ROOT_DIR, UDISK_DOC_ROOT_DIR);
QProcess::execute("sync");
refreshListView(EditMode);
if (ok) {
QMessageBox::information(this, tr("提示"), tr("成功导出到U盘"));
} else {
QMessageBox::warning(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("</span>")){
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("</span>")){
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);
}