File indexing completed on 2024-05-05 04:59:12
0001 /* This file is part of the KDE project 0002 0003 Copyright (C) 2007 Lukas Appelhans <l.appelhans@gmx.de> 0004 Copyright (C) 2007 Joris Guisson <joris.guisson@gmail.com> 0005 0006 This program is free software; you can redistribute it and/or 0007 modify it under the terms of the GNU General Public 0008 License as published by the Free Software Foundation; either 0009 version 2 of the License, or (at your option) any later version. 0010 */ 0011 0012 #include "btadvanceddetailswidget.h" 0013 0014 #include <interfaces/torrentinterface.h> 0015 #include <interfaces/trackerslist.h> 0016 0017 #include "bittorrentsettings.h" 0018 #include "bttransferhandler.h" 0019 #include "chunkdownloadview.h" 0020 #include "fileview.h" 0021 #include "monitor.h" 0022 #include "peerview.h" 0023 #include "trackerview.h" 0024 #include "webseedstab.h" 0025 0026 #include "kget_debug.h" 0027 0028 #include <KConfigGroup> 0029 #include <KLocalizedString> 0030 #include <KSharedConfig> 0031 #include <KTitleWidget> 0032 #include <QDialog> 0033 #include <QGridLayout> 0034 #include <QTabWidget> 0035 0036 using namespace kt; 0037 0038 BTAdvancedDetailsWidget::BTAdvancedDetailsWidget(BTTransferHandler *transfer) 0039 : m_transfer(transfer) 0040 { 0041 tc = m_transfer->torrentControl(); 0042 0043 init(); 0044 0045 // This updates the widget with the right values 0046 slotTransferChanged(transfer, 0xFFFFFFFF); 0047 0048 connect(m_transfer, &TransferHandler::transferChangedEvent, this, &BTAdvancedDetailsWidget::slotTransferChanged); 0049 } 0050 0051 void BTAdvancedDetailsWidget::init() 0052 { 0053 setWindowTitle(i18n("Advanced Details for %1", m_transfer->source().fileName())); 0054 resize(500, 400); 0055 auto *layout = new QGridLayout(); 0056 auto *titleWidget = new KTitleWidget(this); 0057 titleWidget->setText(i18n("Advanced Details for %1", m_transfer->source().fileName())); 0058 titleWidget->setIcon(QIcon::fromTheme("dialog-information")); 0059 layout->addWidget(titleWidget); 0060 tabWidget = new QTabWidget(this); 0061 layout->addWidget(tabWidget); 0062 setLayout(layout); 0063 file_view = new FileView(this); 0064 file_view->changeTC(tc, KSharedConfig::openConfig()); 0065 tabWidget->insertTab(0, file_view, QIcon::fromTheme("inode-directory"), i18n("Files")); 0066 // peer_view = new PeerView(this); 0067 // tabWidget->insertTab(1, peer_view, QIcon::fromTheme("system-users"), i18n("Peers")); 0068 // cd_view = new ChunkDownloadView(this); 0069 // cd_view->changeTC(tc); 0070 // tabWidget->insertTab(2, cd_view, QIcon::fromTheme("preferences-plugin"), i18n("Chunks")); 0071 tracker_view = new TrackerView(this); 0072 tracker_view->changeTC(tc); 0073 tabWidget->insertTab(1, tracker_view, QIcon::fromTheme("network-server"), i18n("Trackers")); 0074 webseeds_tab = new WebSeedsTab(this); 0075 webseeds_tab->changeTC(tc); 0076 tabWidget->insertTab(2, webseeds_tab, QIcon::fromTheme("network-server"), i18n("Webseeds")); 0077 monitor = new Monitor(tc, nullptr, nullptr, file_view); 0078 } 0079 0080 void BTAdvancedDetailsWidget::hideEvent(QHideEvent *event) 0081 { 0082 Q_UNUSED(event) 0083 0084 if (tc) 0085 tc->setMonitor(nullptr); 0086 Q_EMIT aboutToClose(); 0087 deleteLater(); 0088 } 0089 0090 kt::Monitor *BTAdvancedDetailsWidget::torrentMonitor() const 0091 { 0092 return monitor; 0093 } 0094 0095 void BTAdvancedDetailsWidget::slotTransferChanged(TransferHandler *transfer, TransferHandler::ChangesFlags flags) 0096 { 0097 qCDebug(KGET_DEBUG) << "BTAdvancedDetailsWidget::slotTransferChanged"; 0098 0099 Q_UNUSED(transfer) 0100 0101 if (flags & BTTransfer::Tc_ChunksTotal || flags & BTTransfer::Tc_ChunksDownloaded || flags & BTTransfer::Tc_ChunksExcluded 0102 || flags & BTTransfer::Tc_ChunksLeft || flags & Transfer::Tc_DownloadSpeed || flags & Transfer::Tc_UploadSpeed) { 0103 // if (tabWidget->currentIndex() == 1) 0104 // peer_view->update(); 0105 // else if (tabWidget->currentIndex() == 2) 0106 // cd_view->update(); 0107 /*else */ if (tabWidget->currentIndex() == 1) 0108 tracker_view->update(); 0109 } 0110 /*else if (m_transfer->status() == Job::Stopped) 0111 { 0112 peer_view->removeAll(); 0113 //cd_view->removeAll(); 0114 }*/ 0115 } 0116 0117 #include "moc_btadvanceddetailswidget.cpp"