void DownloadView::buttonPushed(QModelIndex index) { const DownloadItemPointer downloadItemPointer = index.data(DownloadItemRole).value<DownloadItemPointer>(); DownloadItem *downloadItem = downloadItemPointer.data(); switch (downloadItem->status()) { case Downloading: case Starting: downloadItem->stop(); break; case Idle: case Failed: downloadItem->tryAgain(); break; case Finished: downloadItem->openFolder(); } }