1 /* This file is part of the KDE project
2
3 Copyright (C) 2007 Lukas Appelhans <l.appelhans@gmx.de>
4 Copyright (C) 2007 Joris Guisson <joris.guisson@gmail.com>
5
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public
8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version.
10 */
11
12 #include "btadvanceddetailswidget.h"
13
14 #include <interfaces/torrentinterface.h>
15 #include <interfaces/trackerslist.h>
16
17 #include "bttransferhandler.h"
18 #include "bittorrentsettings.h"
19 #include "fileview.h"
20 #include "chunkdownloadview.h"
21 #include "peerview.h"
22 #include "monitor.h"
23 #include "trackerview.h"
24 #include "webseedstab.h"
25
26 #include "kget_debug.h"
27
28 #include <QDialog>
29 #include <QGridLayout>
30 #include <QTabWidget>
31
32 #include <KConfigGroup>
33 #include <KSharedConfig>
34 #include <KTitleWidget>
35
36 using namespace kt;
37
BTAdvancedDetailsWidget(BTTransferHandler * transfer)38 BTAdvancedDetailsWidget::BTAdvancedDetailsWidget(BTTransferHandler * transfer)
39 : m_transfer(transfer)
40 {
41 tc = m_transfer->torrentControl();
42
43 init();
44
45 //This updates the widget with the right values
46 slotTransferChanged(transfer, 0xFFFFFFFF);
47
48 connect(m_transfer, &TransferHandler::transferChangedEvent,
49 this, &BTAdvancedDetailsWidget::slotTransferChanged);
50 }
51
init()52 void BTAdvancedDetailsWidget::init()
53 {
54 setWindowTitle(i18n("Advanced Details for %1", m_transfer->source().fileName()));
55 resize(500, 400);
56 auto *layout = new QGridLayout();
57 auto *titleWidget = new KTitleWidget(this);
58 titleWidget->setText(i18n("Advanced Details for %1", m_transfer->source().fileName()));
59 titleWidget->setPixmap(QIcon::fromTheme("dialog-information"));
60 layout->addWidget(titleWidget);
61 tabWidget = new QTabWidget(this);
62 layout->addWidget(tabWidget);
63 setLayout(layout);
64 file_view = new FileView(this);
65 file_view->changeTC(tc, KSharedConfig::openConfig());
66 tabWidget->insertTab(0, file_view, QIcon::fromTheme("inode-directory"), i18n("Files"));
67 //peer_view = new PeerView(this);
68 //tabWidget->insertTab(1, peer_view, QIcon::fromTheme("system-users"), i18n("Peers"));
69 //cd_view = new ChunkDownloadView(this);
70 //cd_view->changeTC(tc);
71 //tabWidget->insertTab(2, cd_view, QIcon::fromTheme("preferences-plugin"), i18n("Chunks"));
72 tracker_view = new TrackerView(this);
73 tracker_view->changeTC(tc);
74 tabWidget->insertTab(1, tracker_view, QIcon::fromTheme("network-server"), i18n("Trackers"));
75 webseeds_tab = new WebSeedsTab(this);
76 webseeds_tab->changeTC(tc);
77 tabWidget->insertTab(2, webseeds_tab, QIcon::fromTheme("network-server"), i18n("Webseeds"));
78 monitor = new Monitor(tc, nullptr, nullptr, file_view);
79 }
80
hideEvent(QHideEvent * event)81 void BTAdvancedDetailsWidget::hideEvent(QHideEvent * event)
82 {
83 Q_UNUSED(event)
84
85 if (tc)
86 tc->setMonitor(nullptr);
87 Q_EMIT aboutToClose();
88 deleteLater();
89 }
90
torrentMonitor() const91 kt::Monitor* BTAdvancedDetailsWidget::torrentMonitor() const
92 {
93 return monitor;
94 }
95
slotTransferChanged(TransferHandler * transfer,TransferHandler::ChangesFlags flags)96 void BTAdvancedDetailsWidget::slotTransferChanged(TransferHandler * transfer, TransferHandler::ChangesFlags flags)
97 {
98 qCDebug(KGET_DEBUG) << "BTAdvancedDetailsWidget::slotTransferChanged" ;
99
100 Q_UNUSED(transfer)
101
102 if (flags & BTTransfer::Tc_ChunksTotal || flags & BTTransfer::Tc_ChunksDownloaded || flags & BTTransfer::Tc_ChunksExcluded || flags & BTTransfer::Tc_ChunksLeft || flags & Transfer::Tc_DownloadSpeed || flags & Transfer::Tc_UploadSpeed)
103 {
104 //if (tabWidget->currentIndex() == 1)
105 // peer_view->update();
106 //else if (tabWidget->currentIndex() == 2)
107 // cd_view->update();
108 /*else */if (tabWidget->currentIndex() == 1)
109 tracker_view->update();
110 }
111 /*else if (m_transfer->status() == Job::Stopped)
112 {
113 peer_view->removeAll();
114 //cd_view->removeAll();
115 }*/
116 }
117
118
119
120