1
0
Fork 0
forked from len0rd/rockbox

Theme Editor: Implemented zip file project export

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27537 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-07-24 08:10:44 +00:00
parent 97b9a4bad8
commit 8556ad81bd
2 changed files with 58 additions and 6 deletions

View file

@ -22,6 +22,11 @@
#include "projectexporter.h" #include "projectexporter.h"
#include "ui_projectexporter.h" #include "ui_projectexporter.h"
#include "quazipfile.h"
#include <QTextStream>
#include <QDir>
ProjectExporter::ProjectExporter(QString path, ProjectModel* project, ProjectExporter::ProjectExporter(QString path, ProjectModel* project,
QWidget *parent) QWidget *parent)
:QDialog(parent), :QDialog(parent),
@ -34,11 +39,20 @@ ProjectExporter::ProjectExporter(QString path, ProjectModel* project,
if(zipFile.open(QuaZip::mdCreate)) if(zipFile.open(QuaZip::mdCreate))
{ {
writeZip(project); html += tr("<span style=\"color:orange\">Resource Check: "
"Not implemented yet</span><br>");
ui->statusBox->document()->setHtml(html);
writeZip(project->getSetting("themebase", ""));
zipFile.close();
html += tr("<span style=\"color:green\">Project exported "
"successfully</span><br>");
ui->statusBox->document()->setHtml(html);
} }
else else
{ {
html += tr("<span style = \"color:red\">Error opening zip file</span><br>"); html += tr("<span style = \"color:red\">"
"Error opening zip file</span><br>");
ui->statusBox->document()->setHtml(html); ui->statusBox->document()->setHtml(html);
} }
} }
@ -72,8 +86,46 @@ void ProjectExporter::close()
hide(); hide();
} }
void ProjectExporter::writeZip(ProjectModel *project) void ProjectExporter::writeZip(QString path, QString base)
{ {
(void)project; if(base == "")
zipFile.close(); base = path;
if(path == "")
{
html += tr("<span style = \"color:red\">"
"Error: Couldn't locate project directory</span><br>");
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);
}
} }

View file

@ -48,7 +48,7 @@ private slots:
void close(); void close();
private: private:
void writeZip(ProjectModel* project); void writeZip(QString path, QString base = "");
Ui::ProjectExporter *ui; Ui::ProjectExporter *ui;
QuaZip zipFile; QuaZip zipFile;