summaryrefslogtreecommitdiff
path: root/src/downloadmanager.cpp
diff options
context:
space:
mode:
authorAl12rs <gabriel.cortesi@outlook.com>2018-05-21 01:27:13 +0200
committerAl12rs <gabriel.cortesi@outlook.com>2018-05-21 01:27:13 +0200
commit186f26b71e4597e9999a3d946b0d9497255fc986 (patch)
tree826b2accfffa4c3eb78baa58de4e8cdbd32eac60 /src/downloadmanager.cpp
parent6d6444c126c59c4307873755b08fc5773b3d3955 (diff)
Added un-hide all option to downlods tab.
Improved performace when hiding/unhiding. There is still room for improvement for hiding but it requires refactoring the function
Diffstat (limited to 'src/downloadmanager.cpp')
-rw-r--r--src/downloadmanager.cpp40
1 files changed, 28 insertions, 12 deletions
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index 6cd86ece..93a46d78 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -645,22 +645,38 @@ void DownloadManager::refreshAlphabeticalTranslation()
void DownloadManager::restoreDownload(int index)
{
- if ((index < 0) || (index >= m_ActiveDownloads.size())) {
- throw MyException(tr("restore: invalid download index: %1").arg(index));
- }
- DownloadInfo *download = m_ActiveDownloads.at(index);
- download->m_Hidden = false;
+ if (index < 0) {
+ DownloadState minState = STATE_READY ;
+ index = 0;
- QString filePath = m_OutputDirectory + "/" + download->m_FileName;
+ for (QVector<DownloadInfo*>::const_iterator iter = m_ActiveDownloads.begin(); iter != m_ActiveDownloads.end(); ++iter ) {
+
+ if ((*iter)->m_State >= minState) {
+ restoreDownload(index);
+ }
+ index++;
+ }
+ }
+ else {
+ if (index >= m_ActiveDownloads.size()) {
+ throw MyException(tr("restore: invalid download index: %1").arg(index));
+ }
- //avoid dirWatcher triggering refreshes
- startDisableDirWatcher();
+ DownloadInfo *download = m_ActiveDownloads.at(index);
+ if (download->m_Hidden) {
+ download->m_Hidden = false;
- QSettings metaSettings(filePath.append(".meta"), QSettings::IniFormat);
- metaSettings.setValue("removed", false);
+ QString filePath = m_OutputDirectory + "/" + download->m_FileName;
- endDisableDirWatcher();
+ //avoid dirWatcher triggering refreshes
+ startDisableDirWatcher();
+ QSettings metaSettings(filePath.append(".meta"), QSettings::IniFormat);
+ metaSettings.setValue("removed", false);
+
+ endDisableDirWatcher();
+ }
+ }
}
@@ -680,7 +696,7 @@ void DownloadManager::removeDownload(int index, bool deleteFile)
removeFile(index, deleteFile);
delete *iter;
iter = m_ActiveDownloads.erase(iter);
- QCoreApplication::processEvents();
+ //QCoreApplication::processEvents();
}
else {
++iter;