| 147 | } |
| 148 | |
| 149 | void CStatsAppUsage::Download(const QString &szFile) |
| 150 | { |
| 151 | QString file = "Stats" + szFile; |
| 152 | if(m_szUrl.isEmpty()) return; |
| 153 | QString szUrl = m_szUrl + "/"; |
| 154 | QString szVersion = m_szVersion; |
| 155 | if(!szVersion.isEmpty()) { |
| 156 | if(RabbitCommon::CTools::VersionValid(szVersion)) { |
| 157 | auto map = RabbitCommon::CTools::GetVersion(szVersion); |
| 158 | if(!map.preRelease.isEmpty() |
| 159 | || !map.build.isEmpty()) { |
| 160 | file += "Dev"; |
| 161 | static QRegularExpression regex("[-|+]"); |
| 162 | szVersion = szVersion.left(szVersion.indexOf(regex)); |
| 163 | qDebug(log) << "Version:" << szVersion; |
| 164 | } |
| 165 | } else |
| 166 | szVersion = QString(); |
| 167 | if(!szVersion.isEmpty()) |
| 168 | szUrl += szVersion + "/"; |
| 169 | } |
| 170 | |
| 171 | szUrl += file; |
| 172 | if(!m_szExt.isEmpty()) |
| 173 | szUrl += "." + m_szExt; |
| 174 | qDebug(log) << Q_FUNC_INFO << szUrl; |
| 175 | |
| 176 | // Download |
| 177 | CWorkerFileTransfer* pWorker = |
| 178 | qobject_cast<CWorkerFileTransfer*>(m_ThreadPool.ChooseWorker()); |
| 179 | if(pWorker) { |
| 180 | QUrl url(szUrl); |
| 181 | QString szDownload; |
| 182 | if(!url.fileName().isEmpty()) { |
| 183 | szDownload = QStandardPaths::writableLocation( |
| 184 | QStandardPaths::TempLocation); |
| 185 | if(szDownload.right(1) != "/" && szDownload.right(1) != "\\") |
| 186 | szDownload += QDir::separator(); |
| 187 | szDownload += QString("Rabbit") + QDir::separator() |
| 188 | + QCoreApplication::applicationName() |
| 189 | + QDir::separator(); |
| 190 | szDownload += url.fileName(); |
| 191 | } |
| 192 | CTaskFileTransfer* task = new CTaskFileTransfer(szUrl, szDownload); |
| 193 | bool check = connect(task, &CTaskFileTransfer::sigFinished, |
| 194 | this, [task, pWorker]() { |
| 195 | qDebug(log) << "Download finished:" << task->Title(); |
| 196 | task->deleteLater(); |
| 197 | }); |
| 198 | check = connect(task, &CTaskFileTransfer::sigError, |
| 199 | this, [task, pWorker](int nErr, const QString& szError){ |
| 200 | qDebug(log) << "Download fail:" << nErr << szError << task->Title(); |
| 201 | }); |
| 202 | pWorker->AddTask(task); |
| 203 | } |
| 204 | } |