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