printing: add set_bundled_templates_as_read_only()

Add the function set_bundled_templates_as_read_only()
in templatelayout.cpp/h. The function is used to
mark the bundled template files as read-only in
the user folder. It is called in mainwindow.cpp,
after the files are copied from the bundle.

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
This commit is contained in:
Lubomir I. Ivanov 2017-11-23 01:59:26 +02:00
parent 6895c0eca5
commit 9209382c18
3 changed files with 26 additions and 0 deletions

View file

@ -258,6 +258,7 @@ MainWindow::MainWindow() : QMainWindow(),
#ifndef NO_PRINTING
// copy the bundled print templates to the user path; no overwriting occurs!
copyPath(getPrintingTemplatePathBundle(), getPrintingTemplatePathUser());
set_bundled_templates_as_read_only();
find_all_templates();
#endif

View file

@ -1,4 +1,5 @@
// SPDX-License-Identifier: GPL-2.0
#include <QFileDevice>
#include <string>
#include "templatelayout.h"
@ -39,6 +40,29 @@ void find_all_templates()
}
}
/* find templates which are part of the bundle in the user path
* and set them as read only.
*/
void set_bundled_templates_as_read_only()
{
QDir dir;
const QString stats("statistics");
QStringList list, listStats;
QString pathBundle = getPrintingTemplatePathBundle();
QString pathUser = getPrintingTemplatePathUser();
dir.setPath(pathBundle);
list = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
dir.setPath(pathBundle + QDir::separator() + stats);
listStats = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);
for (int i = 0; i < listStats.length(); i++)
listStats[i] = stats + QDir::separator() + listStats.at(i);
list += listStats;
foreach (const QString& f, list)
QFile::setPermissions(pathUser + QDir::separator() + f, QFileDevice::ReadOwner | QFileDevice::ReadUser);
}
TemplateLayout::TemplateLayout(print_options *PrintOptions, template_options *templateOptions) :
m_engine(NULL)
{

View file

@ -12,6 +12,7 @@
int getTotalWork(print_options *printOptions);
void find_all_templates();
void set_bundled_templates_as_read_only();
extern QList<QString> grantlee_templates, grantlee_statistics_templates;