1 /* 2 * Bittorrent Client using Qt and libtorrent. 3 * Copyright (C) 2006 Christophe Dumez <chris@qbittorrent.org> 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 18 * 19 * In addition, as a special exception, the copyright holders give permission to 20 * link this program with the OpenSSL project's "OpenSSL" library (or with 21 * modified versions of it that use the same license as the "OpenSSL" library), 22 * and distribute the linked executables. You must obey the GNU General Public 23 * License in all respects for all of the code used other than "OpenSSL". If you 24 * modify file(s), you may extend this exception to your version of the file(s), 25 * but you are not obligated to do so. If you do not wish to do so, delete this 26 * exception statement from your version. 27 */ 28 29 #pragma once 30 31 #include <QTreeWidget> 32 #include <QtContainerFwd> 33 34 class PropertiesWidget; 35 36 namespace BitTorrent 37 { 38 class Torrent; 39 } 40 41 class TrackerListWidget : public QTreeWidget 42 { 43 Q_OBJECT 44 Q_DISABLE_COPY(TrackerListWidget) 45 46 public: 47 enum TrackerListColumn 48 { 49 COL_TIER, 50 COL_URL, 51 COL_STATUS, 52 COL_PEERS, 53 COL_SEEDS, 54 COL_LEECHES, 55 COL_DOWNLOADED, 56 COL_MSG, 57 58 COL_COUNT 59 }; 60 61 explicit TrackerListWidget(PropertiesWidget *properties); 62 ~TrackerListWidget(); 63 64 int visibleColumnsCount() const; 65 66 public slots: 67 void setRowColor(int row, const QColor &color); 68 69 void moveSelectionUp(); 70 void moveSelectionDown(); 71 72 void clear(); 73 void loadStickyItems(const BitTorrent::Torrent *torrent); 74 void loadTrackers(); 75 void askForTrackers(); 76 void copyTrackerUrl(); 77 void reannounceSelected(); 78 void deleteSelectedTrackers(); 79 void editSelectedTracker(); 80 void showTrackerListMenu(const QPoint &); 81 void displayToggleColumnsMenu(const QPoint &); 82 void loadSettings(); 83 void saveSettings() const; 84 85 protected: 86 QVector<QTreeWidgetItem *> getSelectedTrackerItems() const; 87 88 private: 89 static QStringList headerLabels(); 90 91 PropertiesWidget *m_properties; 92 QHash<QString, QTreeWidgetItem *> m_trackerItems; 93 QTreeWidgetItem *m_DHTItem; 94 QTreeWidgetItem *m_PEXItem; 95 QTreeWidgetItem *m_LSDItem; 96 }; 97