一、新增功能
- 新增源目录与输出目录的选择
- 新增历史记录功能,再次打开将会记忆上次选取的源目录、输出目录、URL、版本号
- 新增文件复制功能,点击生成时将会把文件复制到输出目录
- 新增程序图标
二、功能实现
1.记忆功能(放入构造、析构函数中)
void Widget::saveSettings()
{
QSettings settings("Buildhistory.ini",QSettings::IniFormat);
settings.setValue("MainDir", ui->lineEditMainDir->text());
settings.setValue("RootDir", ui->lineEditRootDir->text());
settings.setValue("URL", ui->lineEditURL->text());
settings.setValue("Version", ui->lineEditVersion->text());
}
void Widget::loadSettings()
{
QSettings settings("BuildHistory.ini",QSettings::IniFormat);
ui->lineEditRootDir->setText(settings.value("RootDir").toString());
ui->lineEditMainDir->setText(settings.value("MainDir").toString());
ui->lineEditURL->setText(settings.value("URL").toString());
ui->lineEditVersion->setText(settings.value("Version").toString());
}
2.复制文件到输出目录处
void Widget::on_btnBuild_clicked()
{
QString globalURL = ui->lineEditURL->text();
if (!globalURL.endsWith('/'))
globalURL.append('/');
QString version = ui->lineEditVersion->text();
QString currentDateTime = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss");
QString fileName = "ServerVersionInfo.xml";
QFile file(m_rootPath + '/' +fileName);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
QMessageBox::warning(this, "Error", "Failed to open file for writing.");
return;
}
QXmlStreamWriter xmlWriter(&file);
xmlWriter.setAutoFormatting(true);
xmlWriter.writeStartDocument();
xmlWriter.writeStartElement("Config");
xmlWriter.writeStartElement("Server");
xmlWriter.writeTextElement("XMLURL", globalURL + fileName);
xmlWriter.writeTextElement("MAINVER", version);
xmlWriter.writeTextElement("VERDATE", currentDateTime);
xmlWriter.writeTextElement("AUTHOR", "geek");
xmlWriter.writeStartElement("FILECOUNT");
xmlWriter.writeCharacters(QString::number(m_fileHashes.count()));
xmlWriter.writeEndElement();
xmlWriter.writeStartElement("FILES");
for (auto it = m_fileHashes.begin(); it != m_fileHashes.end(); ++it)
{
QString filePath = it.key();
QString fileURL = globalURL + filePath;
QString fileHash = it.value();
QString destFilePath = m_rootPath + '/' + filePath;
QString destDirPath = QFileInfo(destFilePath).path();
QDir().mkpath(destDirPath); // 创建相应文件夹
if (!QFile::copy(m_mainPath + '/'+filePath, destFilePath))
{
QMessageBox::warning(this, "Error", "Failed to copy file: " + filePath);
qDebug()<<"filePath:"<<filePath<<"\n destFilePath:"<<destFilePath<<"\n destDirPath:"<<destDirPath;
file.close();
return;
}
xmlWriter.writeStartElement("FILE");
xmlWriter.writeTextElement("FILENAME", filePath);
xmlWriter.writeTextElement("FILEURL", fileURL);
xmlWriter.writeTextElement("FILEHASH", fileHash);
xmlWriter.writeEndElement(); // End of FILE
}
xmlWriter.writeEndElement(); // End of FILES
xmlWriter.writeEndElement(); // End of Server
xmlWriter.writeEndElement(); // End of Config
xmlWriter.writeEndDocument();
file.close();
QMessageBox::information(this, "Success", "Server version info generated successfully.");
}