diff options
-rw-r--r-- | utils/themeeditor/gui/projectexporter.cpp | 62 | ||||
-rw-r--r-- | utils/themeeditor/gui/projectexporter.h | 2 |
2 files changed, 58 insertions, 6 deletions
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 @@ | |||
22 | #include "projectexporter.h" | 22 | #include "projectexporter.h" |
23 | #include "ui_projectexporter.h" | 23 | #include "ui_projectexporter.h" |
24 | 24 | ||
25 | #include "quazipfile.h" | ||
26 | |||
27 | #include <QTextStream> | ||
28 | #include <QDir> | ||
29 | |||
25 | ProjectExporter::ProjectExporter(QString path, ProjectModel* project, | 30 | ProjectExporter::ProjectExporter(QString path, ProjectModel* project, |
26 | QWidget *parent) | 31 | QWidget *parent) |
27 | :QDialog(parent), | 32 | :QDialog(parent), |
@@ -34,11 +39,20 @@ ProjectExporter::ProjectExporter(QString path, ProjectModel* project, | |||
34 | 39 | ||
35 | if(zipFile.open(QuaZip::mdCreate)) | 40 | if(zipFile.open(QuaZip::mdCreate)) |
36 | { | 41 | { |
37 | writeZip(project); | 42 | html += tr("<span style=\"color:orange\">Resource Check: " |
43 | "Not implemented yet</span><br>"); | ||
44 | ui->statusBox->document()->setHtml(html); | ||
45 | writeZip(project->getSetting("themebase", "")); | ||
46 | zipFile.close(); | ||
47 | |||
48 | html += tr("<span style=\"color:green\">Project exported " | ||
49 | "successfully</span><br>"); | ||
50 | ui->statusBox->document()->setHtml(html); | ||
38 | } | 51 | } |
39 | else | 52 | else |
40 | { | 53 | { |
41 | html += tr("<span style = \"color:red\">Error opening zip file</span><br>"); | 54 | html += tr("<span style = \"color:red\">" |
55 | "Error opening zip file</span><br>"); | ||
42 | ui->statusBox->document()->setHtml(html); | 56 | ui->statusBox->document()->setHtml(html); |
43 | } | 57 | } |
44 | } | 58 | } |
@@ -72,8 +86,46 @@ void ProjectExporter::close() | |||
72 | hide(); | 86 | hide(); |
73 | } | 87 | } |
74 | 88 | ||
75 | void ProjectExporter::writeZip(ProjectModel *project) | 89 | void ProjectExporter::writeZip(QString path, QString base) |
76 | { | 90 | { |
77 | (void)project; | 91 | if(base == "") |
78 | zipFile.close(); | 92 | base = path; |
93 | if(path == "") | ||
94 | { | ||
95 | html += tr("<span style = \"color:red\">" | ||
96 | "Error: Couldn't locate project directory</span><br>"); | ||
97 | ui->statusBox->document()->setHtml(html); | ||
98 | return; | ||
99 | } | ||
100 | |||
101 | QDir dir(path); | ||
102 | |||
103 | /* First adding any files in the directory */ | ||
104 | QFileInfoList files = dir.entryInfoList(QDir::Files); | ||
105 | for(int i = 0; i < files.count(); i++) | ||
106 | { | ||
107 | QFileInfo current = files[i]; | ||
108 | |||
109 | QString newPath = current.absoluteFilePath().replace(base, "/.rockbox"); | ||
110 | |||
111 | QuaZipFile fout(&zipFile); | ||
112 | QFile fin(current.absoluteFilePath()); | ||
113 | |||
114 | fin.open(QFile::ReadOnly | QFile::Text); | ||
115 | fout.open(QIODevice::WriteOnly, | ||
116 | QuaZipNewInfo(newPath, current.absoluteFilePath())); | ||
117 | |||
118 | fout.write(fin.readAll()); | ||
119 | |||
120 | fin.close(); | ||
121 | fout.close(); | ||
122 | } | ||
123 | |||
124 | /* Then recursively adding any directories */ | ||
125 | QFileInfoList dirs = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); | ||
126 | for(int i = 0; i < dirs.count(); i++) | ||
127 | { | ||
128 | QFileInfo current = dirs[i]; | ||
129 | writeZip(current.absoluteFilePath(), base); | ||
130 | } | ||
79 | } | 131 | } |
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: | |||
48 | void close(); | 48 | void close(); |
49 | 49 | ||
50 | private: | 50 | private: |
51 | void writeZip(ProjectModel* project); | 51 | void writeZip(QString path, QString base = ""); |
52 | 52 | ||
53 | Ui::ProjectExporter *ui; | 53 | Ui::ProjectExporter *ui; |
54 | QuaZip zipFile; | 54 | QuaZip zipFile; |