void MainWidget::on_RSMV_saveFormMsg_PsBtn_clicked() { QString style; switch(0) { case 0: style ="XL";break; case 1: style ="XL_SMV" ;break; case 2: style ="XL_GSE" ;break; default: style ="XL_Frame";break; } #if 1 QTime temp_time = QTime::currentTime(); QString strTime = temp_time.toString("hh_mm_ss");//文件保存不能出现:冒号 strTime ="./"+style + "_" +strTime + ".txt"; //root QString fileName = QFileDialog::getSaveFileName(this,tr("另存为"),strTime, tr("Files (*.txt)")); if (fileName.isNull()) { return; } QFile fileTemp(fileName); if (!fileTemp.open(QIODevice::WriteOnly | QIODevice::Text)) { show_MsBox(QString::fromUtf8("保存失败"),3000); return; } QTextStream streamTemp(&fileTemp); streamTemp<<ui->from_error_TxEdit->toPlainText(); fileTemp.close(); show_MsBox(QString::fromUtf8("保存成功"),3000); #endif }
int MainWindow::onExtractArchive(QString path) { QByteArray pathArray = path.toUtf8(); const char *file = pathArray.constData(); file_archive_transfer_t state; struct archive_extract_userdata userdata; struct string_list *file_list = file_archive_get_file_list(file, NULL); bool returnerr = true; unsigned i; if (!file_list || file_list->size == 0) { showMessageBox("Error: Archive is empty.", MainWindow::MSGBOX_TYPE_ERROR, Qt::ApplicationModal, false); RARCH_ERR("[Qt]: Downloaded archive is empty?\n"); return -1; } for (i = 0; i < file_list->size; i++) { QFile fileObj(file_list->elems[i].data); if (fileObj.exists()) { if (!fileObj.remove()) { /* if we cannot delete the existing file to update it, rename it for now and delete later */ QFile fileTemp(fileObj.fileName() + TEMP_EXTENSION); if (fileTemp.exists()) { if (!fileTemp.remove()) { showMessageBox(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_DELETE_FILE), MainWindow::MSGBOX_TYPE_ERROR, Qt::ApplicationModal, false); RARCH_ERR("[Qt]: Could not delete file: %s\n", file_list->elems[i].data); return -1; } } if (!fileObj.rename(fileTemp.fileName())) { showMessageBox(msg_hash_to_str(MENU_ENUM_LABEL_VALUE_QT_COULD_NOT_RENAME_FILE), MainWindow::MSGBOX_TYPE_ERROR, Qt::ApplicationModal, false); RARCH_ERR("[Qt]: Could not rename file: %s\n", file_list->elems[i].data); return -1; } } } } string_list_free(file_list); memset(&state, 0, sizeof(state)); memset(&userdata, 0, sizeof(userdata)); state.type = ARCHIVE_TRANSFER_INIT; m_updateProgressDialog->setWindowModality(Qt::NonModal); m_updateProgressDialog->setMinimumDuration(0); m_updateProgressDialog->setRange(0, 0); m_updateProgressDialog->setAutoClose(true); m_updateProgressDialog->setAutoReset(true); m_updateProgressDialog->setValue(0); m_updateProgressDialog->setLabelText(QString(msg_hash_to_str(MSG_EXTRACTING)) + "..."); m_updateProgressDialog->setCancelButtonText(QString()); m_updateProgressDialog->show(); if (!task_push_decompress(file, ".", NULL, NULL, NULL, extractCB, this)) { m_updateProgressDialog->cancel(); return -1; } return returnerr; }
void ThreadRemoveExifDatas::run() { QTableWidgetItem *item; Exiv2::ExifData::iterator keyIteratorRemove; Exiv2::ExifKey *keyRemove; QVector<QString> listErrorRemoveFile; QVector<int> listErrorRemoveFilePosition; connect(this, SIGNAL(progressBarValue(int)), progressBar, SLOT(setValue(int))); connect(this, SIGNAL(progressBarSetVisible(bool)), progressBar, SLOT(setVisible(bool))); emit progressBarSetVisible(true); progressBar->setRange(0, tableWidgetJpeg->rowCount()); for (int i = 0; i < tableWidgetJpeg->rowCount(); i++) { try { emit progressBarValue(i); Exiv2::Image::AutoPtr image; image = Exiv2::ImageFactory::open(tableWidgetJpeg->item(i, 7)->text().toStdString().c_str()); if (tableWidgetJpeg->item(i, 3) != 0 || tableWidgetJpeg->item(i, 4) != 0 || tableWidgetJpeg->item(i, 5) != 0) { bool exifRemovido = false; assert(image.get() != 0); image->readMetadata(); Exiv2::ExifData &exifData = image->exifData(); Exiv2::ExifKey keyLatitude = Exiv2::ExifKey("Exif.GPSInfo.GPSLatitude"); keyIteratorRemove = exifData.findKey(keyLatitude); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSTimeStamp"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSDateStamp"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSVersionID"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSMapDatum"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSLatitudeRef"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSLongitude"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSLongitudeRef"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSAltitude"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSAltitudeRef"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSImgDirectionRef"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSImgDirection"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } keyRemove = new Exiv2::ExifKey("Exif.GPSInfo.GPSProcessingMethod"); keyIteratorRemove = exifData.findKey(*keyRemove); if (keyIteratorRemove != exifData.end()) { exifData.erase(keyIteratorRemove); exifRemovido = true; } if (exifRemovido) { QString softwareTag = QApplication::applicationName(); softwareTag += " "; softwareTag += QApplication::applicationVersion(); exifData["Exif.Image.Software"] = softwareTag.toStdString(); } image->setExifData(exifData); image->writeMetadata(); QString itemStatus = QString::fromUtf8("Dados Removidos"); item = new QTableWidgetItem(); item->setText(itemStatus); delete tableWidgetJpeg->takeItem(i, 3); delete tableWidgetJpeg->takeItem(i, 4); delete tableWidgetJpeg->takeItem(i, 5); tableWidgetJpeg->setItem(i, 6, item); } else { QString itemStatus = QString::fromUtf8("Não Há Dados Para Remover"); item = new QTableWidgetItem(); item->setText(itemStatus); tableWidgetJpeg->setItem(i, 6, item); } } catch (Exiv2::AnyError& e) { QString itemMsg; switch (e.code()) { case 2: itemMsg = QString::fromUtf8("Erro ao Remover Arquivo"); // Quando ocorrer erro na remoção do arquivo, ele será colocado numa lista para // que ao fim da execução seja tentado mais uma vez a sua remoção. listErrorRemoveFile.push_back(tableWidgetJpeg->item(i, 7)->text()); listErrorRemoveFilePosition.push_back(i); break; case 9: itemMsg = QString::fromUtf8("Erro de Acesso ao Arquivo"); break; case 10: itemMsg = QString::fromUtf8("Arquivo Somente Leitura"); break; case 11: itemMsg = QString::fromUtf8("Arquivo Inválido"); break; } item = new QTableWidgetItem(); item->setForeground(QColor(255, 0, 0)); item->setText(itemMsg); tableWidgetJpeg->setItem(i, 6, item); } } for (int i = 0; i < listErrorRemoveFile.size(); i++) { //precisa pesquisar no disco se tem outro arquivo com o nome igual mas com a extensão diferente // se achar, tem que remover o atual e renomear o outro arquivo. QString fileName; QString filePath; QString itemMsg; int pos; pos = listErrorRemoveFile.at(i).lastIndexOf("/"); fileName.operator =(QString::fromUtf8(listErrorRemoveFile.at(i).right(listErrorRemoveFile.at(i).size() - pos - 1).toStdString().c_str())); filePath = listErrorRemoveFile.at(i).left(pos); QDir directory(filePath); QStringList filesOnDirectory = directory.entryList(QDir::Files); QString regularExpression(fileName); regularExpression.append("[0-9]{1,4}"); QRegExp fileRegExp(regularExpression, Qt::CaseSensitive, QRegExp::RegExp); QStringList filesLocated = filesOnDirectory.filter(fileRegExp); for (int j = 0; j < filesLocated.size(); j++) { itemMsg = QString::fromUtf8("Não Foi Possível Corrigir o Arquivo, Verifique Manualmente"); QFileInfo fileTemp(directory, filesLocated.at(j)); QFileInfo fileCurrent(directory, fileName); if (fileTemp.size() > fileCurrent.size()) { if (directory.remove(fileName)) { if (directory.rename(filesLocated.at(j), fileName)) { itemMsg = QString::fromUtf8("O Erro no Arquivo foi Corrigido"); delete tableWidgetJpeg->takeItem(listErrorRemoveFilePosition.at(i), 3); delete tableWidgetJpeg->takeItem(listErrorRemoveFilePosition.at(i), 4); delete tableWidgetJpeg->takeItem(listErrorRemoveFilePosition.at(i), 5); } } } else { if (directory.remove(filesLocated.at(j))) itemMsg = QString::fromUtf8("O Erro no Arquivo foi Corrigido"); } item = new QTableWidgetItem(); item->setForeground(QColor(0, 110, 0)); item->setText(itemMsg); tableWidgetJpeg->setItem(listErrorRemoveFilePosition.at(i), 6, item); } } emit progressBarValue(tableWidgetJpeg->rowCount()); sleep(1); emit progressBarSetVisible(false); }