downloadwidget.cpp |
35 | 35 | m_startLevel(0), |
36 | 36 | m_dlRect(), |
37 | 37 | m_dlList(), |
| 38 | m_prefix("OSM"), |
38 | 39 | m_up(new QLabel("N 0", this)), |
39 | 40 | m_left(new QLabel("E 0", this)), |
40 | 41 | m_right(new QLabel("E 0", this)), |
41 | 42 | m_bottom(new QLabel("N 0", this)), |
42 | 43 | m_levelSpinBox(new QSpinBox(this)), |
43 | 44 | m_dlProgress(new QProgressBar(this)), |
| 45 | m_prefixInput(new QLineEdit(this)), |
44 | 46 | m_skipExisting(new QCheckBox("S&kip already downloaded tiles", this)) |
45 | 47 | { |
46 | 48 | QGridLayout *layout = new QGridLayout(this); |
... | ... | |
66 | 68 | m_levelSpinBox->setRange(0, 18); |
67 | 69 | layout->addWidget(m_levelSpinBox, 3, 2, 1, 2); |
68 | 70 | |
| 71 | label = new QLabel("Download into directory", this); |
| 72 | layout->addWidget(label, 4, 0); |
| 73 | |
| 74 | m_prefixInput->setText(m_prefix); |
| 75 | layout->addWidget(m_prefixInput, 4, 2, 1, 2); |
| 76 | |
69 | 77 | m_skipExisting->setChecked(false); |
70 | | layout->addWidget(m_skipExisting, 4, 0, 1, 0); |
| 78 | layout->addWidget(m_skipExisting, 5, 0, 1, 0); |
71 | 79 | |
72 | 80 | m_dlProgress->setFormat("%v / %m"); |
73 | | layout->addWidget(m_dlProgress, 5, 0, 1, 4); |
| 81 | layout->addWidget(m_dlProgress, 6, 0, 1, 4); |
74 | 82 | |
75 | 83 | QPushButton *start = new QPushButton("&Start", this); |
76 | 84 | connect(start, SIGNAL(clicked()), this, SLOT(startDownload())); |
77 | | layout->addWidget(start, 6, 0, 1, 2); |
| 85 | layout->addWidget(start, 7, 0, 1, 2); |
78 | 86 | |
79 | 87 | QPushButton *back = new QPushButton("&Back", this); |
80 | 88 | connect(back, SIGNAL(clicked()), this, SIGNAL(back())); |
81 | | layout->addWidget(back, 6, 2, 1, 2); |
| 89 | layout->addWidget(back, 7, 2, 1, 2); |
82 | 90 | |
83 | 91 | connect(m_manager, SIGNAL(finished(QNetworkReply*)), |
84 | 92 | this, SLOT(replyFinished(QNetworkReply*))); |
... | ... | |
111 | 119 | |
112 | 120 | void DownloadWidget::startDownload() |
113 | 121 | { |
| 122 | m_prefix = m_prefixInput->text(); |
114 | 123 | m_dlProgress->setValue(0); |
115 | 124 | for (int level = m_startLevel; level <= m_levelSpinBox->value(); ++level) { |
116 | 125 | int max = pow(2, level) - 1; |
... | ... | |
138 | 147 | int level = path.section('/', 1, 1).toInt(); |
139 | 148 | int x = path.section('/', 2, 2).toInt(); |
140 | 149 | |
141 | | QDir base(QDir::homePath()+"/Maps/OSM"); |
| 150 | QDir base(QDir::homePath()+"/Maps/"+m_prefix); |
142 | 151 | base.mkpath(QString("%1/%2").arg(level).arg(x)); |
143 | 152 | |
144 | 153 | QByteArray data = reply->readAll(); |
145 | 154 | if (!data.isEmpty()) { |
146 | | QFile file(QDir::homePath()+"/Maps/OSM"+path); |
| 155 | QFile file(QDir::homePath()+"/Maps/"+m_prefix+path); |
147 | 156 | if (file.open(QFile::WriteOnly)) { |
148 | 157 | file.write(data); |
149 | 158 | } |
150 | 159 | } |
151 | 160 | while (!m_dlList.isEmpty()) { |
152 | 161 | QUrl url(m_dlList.takeFirst()); |
153 | | if (QFile::exists(QDir::homePath()+"/Maps/OSM"+url.path()) && |
| 162 | if (QFile::exists(QDir::homePath()+"/Maps/"+m_prefix+url.path()) && |
154 | 163 | m_skipExisting->isChecked()) { |
155 | 164 | int n = m_dlProgress->value(); |
156 | 165 | m_dlProgress->setValue(n+1); |