kget
btadvanceddetailswidget.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "btadvanceddetailswidget.h"
00013
00014 #include <interfaces/torrentinterface.h>
00015 #include <interfaces/trackerslist.h>
00016
00017 #include "bttransferhandler.h"
00018 #include "bittorrentsettings.h"
00019 #include "fileview.h"
00020 #include "chunkdownloadview.h"
00021 #include "peerview.h"
00022 #include "monitor.h"
00023 #include "trackerview.h"
00024 #include "webseedstab.h"
00025
00026 #include <kdebug.h>
00027 #include <kglobal.h>
00028 #include <kdialog.h>
00029 #include <ktabwidget.h>
00030 #include <ktitlewidget.h>
00031 #include <QGridLayout>
00032
00033 using namespace kt;
00034
00035 BTAdvancedDetailsWidget::BTAdvancedDetailsWidget(BTTransferHandler * transfer)
00036 : m_transfer(transfer)
00037 {
00038 tc = m_transfer->torrentControl();
00039
00040 init();
00041
00042 transfer->addObserver(this);
00043
00044 transferChangedEvent(transfer);
00045 }
00046
00047 BTAdvancedDetailsWidget::~BTAdvancedDetailsWidget()
00048 {
00049 m_transfer->delObserver(this);
00050 }
00051
00052 void BTAdvancedDetailsWidget::init()
00053 {
00054 setWindowTitle(i18n("Advanced-Details for %1", m_transfer->source().fileName()));
00055 resize(500, 400);
00056 QGridLayout *layout = new QGridLayout();
00057 KTitleWidget *titleWidget = new KTitleWidget(this);
00058 titleWidget->setText(i18n("Advanced Details for %1", m_transfer->source().fileName()));
00059 titleWidget->setPixmap(KIcon("dialog-information"));
00060 layout->addWidget(titleWidget);
00061 tabWidget = new KTabWidget(this);
00062 layout->addWidget(tabWidget);
00063 setLayout(layout);
00064 file_view = new FileView(this);
00065 file_view->changeTC(tc, KGlobal::config());
00066 tabWidget->insertTab(0, file_view, KIcon("inode-directory"), i18n("Files"));
00067 peer_view = new PeerView(this);
00068 tabWidget->insertTab(1, peer_view, KIcon("system-users"), i18n("Peers"));
00069 cd_view = new ChunkDownloadView(this);
00070 cd_view->changeTC(tc);
00071 tabWidget->insertTab(2, cd_view, KIcon("preferences-plugin"), i18n("Chunks"));
00072 tracker_view = new TrackerView(this);
00073 tracker_view->changeTC(tc);
00074 tabWidget->insertTab(3, tracker_view, KIcon("network-server"), i18n("Trackers"));
00075 webseeds_tab = new WebSeedsTab(this);
00076 webseeds_tab->changeTC(tc);
00077 tabWidget->insertTab(4, webseeds_tab, KIcon("network-server"), i18n("Webseeds"));
00078 monitor = new Monitor(tc,peer_view,cd_view);
00079 }
00080
00081 void BTAdvancedDetailsWidget::transferChangedEvent(TransferHandler * transfer)
00082 {
00083 Q_UNUSED(transfer);
00084 kDebug(5001);
00085 TransferHandler::ChangesFlags transferFlags = m_transfer->changesFlags(this);
00086 if (transferFlags & BTTransfer::Tc_ChunksTotal || transferFlags & BTTransfer::Tc_ChunksDownloaded || transferFlags & BTTransfer::Tc_ChunksExcluded || transferFlags & BTTransfer::Tc_ChunksLeft || transferFlags & Transfer::Tc_DownloadSpeed || transferFlags & Transfer::Tc_UploadSpeed)
00087 {
00088 if (tabWidget->currentIndex() == 1)
00089 peer_view->update();
00090 else if (tabWidget->currentIndex() == 2)
00091 cd_view->update();
00092 else if (tabWidget->currentIndex() == 3)
00093 tracker_view->update();
00094 }
00095 else if (m_transfer->status() == Job::Stopped)
00096 {
00097 peer_view->removeAll();
00098 cd_view->removeAll();
00099 }
00100
00101 m_transfer->resetChangesFlags(this);
00102 }
00103
00104 void BTAdvancedDetailsWidget::hideEvent(QHideEvent * event)
00105 {
00106 Q_UNUSED(event);
00107
00108 if (tc)
00109 tc->setMonitor(0);
00110 emit aboutToClose();
00111 deleteLater();
00112 }
00113
00114 kt::Monitor* BTAdvancedDetailsWidget::torrentMonitor() const
00115 {
00116 if (monitor)
00117 return monitor;
00118 else
00119 return 0;
00120 }
00121
00122 #include "btadvanceddetailswidget.moc"
00123