File indexing completed on 2024-04-28 04:57:30

0001 /* This file is part of the KDE project
0002 
0003    Copyright (C) 2007 Lukas Appelhans <l.appelhans@gmx.de>
0004 
0005    This program is free software; you can redistribute it and/or
0006    modify it under the terms of the GNU General Public
0007    License as published by the Free Software Foundation; either
0008    version 2 of the License, or (at your option) any later version.
0009 */
0010 
0011 #include "bttransferhandler.h"
0012 
0013 #include "advanceddetails/btadvanceddetailswidget.h"
0014 #include "advanceddetails/monitor.h"
0015 #include "scandlg.h"
0016 
0017 #include "core/scheduler.h"
0018 
0019 #include "kget_debug.h"
0020 
0021 BTTransferHandler::BTTransferHandler(BTTransfer *transfer, Scheduler *scheduler)
0022     : TransferHandler(transfer, scheduler)
0023     , m_transfer(transfer)
0024 {
0025     advancedDetails = nullptr;
0026     scanDlg = nullptr;
0027 }
0028 
0029 BTTransferHandler::~BTTransferHandler()
0030 {
0031     if (advancedDetails)
0032         delete (advancedDetails);
0033 }
0034 
0035 void BTTransferHandler::createAdvancedDetails()
0036 {
0037     if (!torrentControl())
0038         return;
0039     qCDebug(KGET_DEBUG);
0040 
0041     if (!advancedDetails) {
0042         qCDebug(KGET_DEBUG) << "Going to create AdvancedDetails";
0043         advancedDetails = new BTAdvancedDetailsWidget(this);
0044         advancedDetails->show();
0045         connect(advancedDetails, &BTAdvancedDetailsWidget::aboutToClose, this, &BTTransferHandler::removeAdvancedDetails);
0046         if (m_transfer->torrentControl()) {
0047             m_transfer->torrentControl()->setMonitor(nullptr);
0048             m_transfer->torrentControl()->setMonitor(m_transfer);
0049         }
0050     }
0051 }
0052 
0053 void BTTransferHandler::removeAdvancedDetails()
0054 {
0055     advancedDetails->close();
0056     advancedDetails = nullptr;
0057 }
0058 
0059 kt::Monitor *BTTransferHandler::torrentMonitor() const
0060 {
0061     if (advancedDetails)
0062         return advancedDetails->torrentMonitor();
0063     else
0064         return nullptr;
0065 }
0066 
0067 void BTTransferHandler::createScanDlg()
0068 {
0069     if (!torrentControl())
0070         return;
0071 
0072     scanDlg = new kt::ScanDlg(m_transfer->torrentControl()->startDataCheck(false, 0, m_transfer->chunksTotal()), nullptr); // TODO: Maybe start/stop it
0073     scanDlg->exec();
0074 }
0075 
0076 #include "moc_bttransferhandler.cpp"