From 8556ad81bd65cfbf431634e4cee7a59d1d9abe1d Mon Sep 17 00:00:00 2001 From: Robert Bieber Date: Sat, 24 Jul 2010 08:10:44 +0000 Subject: Theme Editor: Implemented zip file project export git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27537 a1c6a512-1295-4272-9138-f99709370657 --- utils/themeeditor/gui/projectexporter.cpp | 62 ++++++++++++++++++++++++++++--- utils/themeeditor/gui/projectexporter.h | 2 +- 2 files changed, 58 insertions(+), 6 deletions(-) (limited to 'utils') diff --git a/utils/themeeditor/gui/projectexporter.cpp b/utils/themeeditor/gui/projectexporter.cpp index b9718d11c5..dec1b13d3e 100644 --- a/utils/themeeditor/gui/projectexporter.cpp +++ b/utils/themeeditor/gui/projectexporter.cpp @@ -22,6 +22,11 @@ #include "projectexporter.h" #include "ui_projectexporter.h" +#include "quazipfile.h" + +#include +#include + ProjectExporter::ProjectExporter(QString path, ProjectModel* project, QWidget *parent) :QDialog(parent), @@ -34,11 +39,20 @@ ProjectExporter::ProjectExporter(QString path, ProjectModel* project, if(zipFile.open(QuaZip::mdCreate)) { - writeZip(project); + html += tr("Resource Check: " + "Not implemented yet
"); + ui->statusBox->document()->setHtml(html); + writeZip(project->getSetting("themebase", "")); + zipFile.close(); + + html += tr("Project exported " + "successfully
"); + ui->statusBox->document()->setHtml(html); } else { - html += tr("Error opening zip file
"); + html += tr("" + "Error opening zip file
"); ui->statusBox->document()->setHtml(html); } } @@ -72,8 +86,46 @@ void ProjectExporter::close() hide(); } -void ProjectExporter::writeZip(ProjectModel *project) +void ProjectExporter::writeZip(QString path, QString base) { - (void)project; - zipFile.close(); + if(base == "") + base = path; + if(path == "") + { + html += tr("" + "Error: Couldn't locate project directory
"); + ui->statusBox->document()->setHtml(html); + return; + } + + QDir dir(path); + + /* First adding any files in the directory */ + QFileInfoList files = dir.entryInfoList(QDir::Files); + for(int i = 0; i < files.count(); i++) + { + QFileInfo current = files[i]; + + QString newPath = current.absoluteFilePath().replace(base, "/.rockbox"); + + QuaZipFile fout(&zipFile); + QFile fin(current.absoluteFilePath()); + + fin.open(QFile::ReadOnly | QFile::Text); + fout.open(QIODevice::WriteOnly, + QuaZipNewInfo(newPath, current.absoluteFilePath())); + + fout.write(fin.readAll()); + + fin.close(); + fout.close(); + } + + /* Then recursively adding any directories */ + QFileInfoList dirs = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + for(int i = 0; i < dirs.count(); i++) + { + QFileInfo current = dirs[i]; + writeZip(current.absoluteFilePath(), base); + } } diff --git a/utils/themeeditor/gui/projectexporter.h b/utils/themeeditor/gui/projectexporter.h index 4012d384ac..d743172dd9 100644 --- a/utils/themeeditor/gui/projectexporter.h +++ b/utils/themeeditor/gui/projectexporter.h @@ -48,7 +48,7 @@ private slots: void close(); private: - void writeZip(ProjectModel* project); + void writeZip(QString path, QString base = ""); Ui::ProjectExporter *ui; QuaZip zipFile; -- cgit v1.2.3