@@ -237,6 +237,7 @@ void DocsetsDialog::downloadSelectedDocsets()
237
237
238
238
QAbstractItemModel *model = ui->availableDocsetList ->model ();
239
239
model->setData (index , tr (" Downloading: %p%" ), ProgressItemDelegate::FormatRole);
240
+ model->setData (index , true , ProgressItemDelegate::CancellableRole);
240
241
model->setData (index , 0 , ProgressItemDelegate::ValueRole);
241
242
model->setData (index , true , ProgressItemDelegate::ShowProgressRole);
242
243
@@ -392,6 +393,7 @@ void DocsetsDialog::downloadCompleted()
392
393
QListWidgetItem *item = findDocsetListItem (docsetName);
393
394
if (item) {
394
395
item->setData (ProgressItemDelegate::ValueRole, 0 );
396
+ item->setData (ProgressItemDelegate::CancellableRole, false );
395
397
item->setData (ProgressItemDelegate::FormatRole, tr (" Installing: %p%" ));
396
398
}
397
399
@@ -573,9 +575,9 @@ void DocsetsDialog::setupAvailableDocsetsTab()
573
575
{
574
576
using Registry::DocsetRegistry;
575
577
576
- ui-> availableDocsetList -> setItemDelegate ( new ProgressItemDelegate (this ) );
577
- ProgressItemDelegate* del = static_cast <ProgressItemDelegate*>(ui-> availableDocsetList -> itemDelegate () );
578
- connect (del, &ProgressItemDelegate::cancelButtonClicked, this , &DocsetsDialog::cancelDownload );
578
+ ProgressItemDelegate *delegate = new ProgressItemDelegate (this );
579
+ connect (delegate, & ProgressItemDelegate::cancelButtonClicked, this , &DocsetsDialog::cancelDownload );
580
+ ui-> availableDocsetList -> setItemDelegate (delegate );
579
581
580
582
connect (m_docsetRegistry, &DocsetRegistry::docsetUnloaded, this , [this ](const QString name) {
581
583
QListWidgetItem *item = findDocsetListItem (name);
@@ -610,6 +612,7 @@ void DocsetsDialog::setupAvailableDocsetsTab()
610
612
611
613
QAbstractItemModel *model = ui->availableDocsetList ->model ();
612
614
model->setData (index , tr (" Downloading: %p%" ), ProgressItemDelegate::FormatRole);
615
+ model->setData (index , true , ProgressItemDelegate::CancellableRole);
613
616
model->setData (index , 0 , ProgressItemDelegate::ValueRole);
614
617
model->setData (index , true , ProgressItemDelegate::ShowProgressRole);
615
618
@@ -710,16 +713,18 @@ void DocsetsDialog::cancelDownload(const QModelIndex &index)
710
713
{
711
714
// Find and delete download jobs corresponding to index
712
715
for (QNetworkReply *reply : m_replies) {
713
- if (reply->property (ListItemIndexProperty).toInt () == index .row ()
714
- && reply->property (DownloadTypeProperty).toInt () == DownloadDocset) {
715
- QListWidgetItem *listItem = ui->availableDocsetList ->item (index .row ());
716
- listItem->setData (ProgressItemDelegate::ShowProgressRole, false );
717
- delete m_tmpFiles.take (reply->property (DocsetNameProperty).toString ());
718
- reply->abort ();
719
-
720
- m_combinedReceived -= reply->property (DownloadPreviousReceived).toLongLong ();
721
- m_combinedTotal -= reply->property (DownloadTotalSize).toLongLong ();
716
+ if (reply->property (ListItemIndexProperty).toInt () != index .row ()
717
+ || reply->property (DownloadTypeProperty).toInt () != DownloadDocset) {
718
+ continue ;
722
719
}
720
+
721
+ QListWidgetItem *listItem = ui->availableDocsetList ->item (index .row ());
722
+ listItem->setData (ProgressItemDelegate::ShowProgressRole, false );
723
+ delete m_tmpFiles.take (reply->property (DocsetNameProperty).toString ());
724
+ reply->abort ();
725
+
726
+ m_combinedReceived -= reply->property (DownloadPreviousReceived).toLongLong ();
727
+ m_combinedTotal -= reply->property (DownloadTotalSize).toLongLong ();
723
728
}
724
729
725
730
// As the current download is cancelled, unselect the current selected item
0 commit comments