1
#include "DialogDownload.h"
3
#include <QtCore/QDebug>
5
#include <QtGui/QMessageBox>
7
#include <navitconf/file/Settings.h>
8
#include <navitconf/file/Unzip.h>
10
QString DialogDownload::download(QWidget* parent) {
11
DialogDownload dialog(parent);
13
return dialog.getFilename();
16
DialogDownload::DialogDownload(QWidget* parent)
22
bool hasLastDownload = false;
24
hasLastDownload = QFile::exists(Settings::getInstance().getNavitInstallationFile());
26
QMessageBox::critical(parent, tr("Error"), e);
28
ui.rbUseLastDownload->setEnabled(hasLastDownload);
29
ui.rbUseLastDownload->setChecked(hasLastDownload);
32
DialogDownload::~DialogDownload() {
35
void DialogDownload::accept() {
36
ui.buttonBox->setStandardButtons(QDialogButtonBox::Cancel);
39
zipFile = Settings::getInstance().getNavitInstallationFile();
41
QMessageBox::critical(this, tr("Error"), e);
43
if (!zipFile.isEmpty()) {
44
if (ui.rbDownloadCurrentVersion->isChecked()) {
45
QString url(ui.tbxDownloadURL->text());
46
ui.progressBar->setMaximum(ui.progressBar->width());
47
netDownload.download(ui.tbxDownloadURL->text(), zipFile); // asyn download
50
extractNavitXml(zipFile);
55
void DialogDownload::downloadProgress(float percent) {
56
ui.progressBar->setValue(ui.progressBar->maximum() * percent);
59
void DialogDownload::downloadFinished(const QString& filename) {
60
extractNavitXml(filename);
63
void DialogDownload::downloadError(const QString& msg) {
64
QMessageBox::critical(this, tr("Error"), msg);
65
ui.buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
68
QString DialogDownload::getFilename() {
72
void DialogDownload::extractNavitXml(const QString& zipFile) {
73
char resolution = 'm';
74
if (ui.rbHighResolution->isChecked()) {
76
} else if (ui.rbLowResolution->isChecked()) {
80
QString dirSettings(Settings::getInstance().getDir().absolutePath());
81
// extract all files from archive
82
Unzip unzip(zipFile, dirSettings);
83
for (int i = 0; i < unzip.getNumberOfFiles(); i++) {
84
if (!unzip.getNextFilename().startsWith("lib/")) { // ignore files in the lib folder
88
filename = dirSettings + "/res/raw/navit" + resolution + "dpi.xml";
91
QMessageBox::critical(this, tr("Error"), e);