/* * This file Copyright (C) Mnemosyne LLC * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 * as published by the Free Software Foundation. * * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html * * $Id$ */ #ifndef DETAILS_DIALOG_H #define DETAILS_DIALOG_H #include #include #include #include #include #include #include "prefs.h" class FileTreeView; class QTreeView; class QComboBox; class QCheckBox; class QDoubleSpinBox; class QLabel; class QRadioButton; class QSpinBox; class QTextBrowser; class QTreeWidget; class QTreeWidgetItem; class Session; class Torrent; class TorrentModel; class TrackerDelegate; class TrackerModel; class TrackerModelFilter; class Details: public QDialog { Q_OBJECT private: void getNewData( ); private slots: void onTorrentChanged( ); void onTimer( ); public: Details( Session&, Prefs&, TorrentModel&, QWidget * parent = 0 ); ~Details( ); void setIds( const QSet& ids ); private: QWidget * createPeersTab( ); QWidget * createTrackerTab( ); QWidget * createInfoTab( ); QWidget * createFilesTab( ); QWidget * createOptionsTab( ); private: QIcon getStockIcon( const QString& freedesktop_name, int fallback ); QString timeToStringRounded( int seconds ); QString trimToDesiredWidth( const QString& str ); void enableWhenChecked( QCheckBox *, QWidget * ); private: Session& mySession; Prefs& myPrefs; TorrentModel& myModel; QSet myIds; QTimer myTimer; bool myChangedTorrents; bool myHavePendingRefresh; QLabel * myStateLabel; QLabel * myHaveLabel; QLabel * myAvailabilityLabel; QLabel * myDownloadedLabel; QLabel * myUploadedLabel; QLabel * myErrorLabel; QLabel * myRunTimeLabel; QLabel * myETALabel; QLabel * myLastActivityLabel; QCheckBox * mySessionLimitCheck; QCheckBox * mySingleDownCheck; QCheckBox * mySingleUpCheck; QCheckBox * myShowTrackerScrapesCheck; QCheckBox * myShowBackupTrackersCheck; QPushButton * myAddTrackerButton; QPushButton * myEditTrackerButton; QPushButton * myRemoveTrackerButton; QSpinBox * mySingleDownSpin; QSpinBox * mySingleUpSpin; QComboBox * myRatioCombo; QDoubleSpinBox * myRatioSpin; QComboBox * myIdleCombo; QSpinBox * myIdleSpin; QSpinBox * myPeerLimitSpin; QComboBox * myBandwidthPriorityCombo; QLabel * mySizeLabel; QLabel * myHashLabel; QLabel * myPrivacyLabel; QLabel * myOriginLabel; QLabel * myLocationLabel; QTextBrowser * myCommentBrowser; QLabel * myTrackerLabel; QLabel * myScrapeTimePrevLabel; QLabel * myScrapeTimeNextLabel; QLabel * myScrapeResponseLabel; QLabel * myAnnounceTimePrevLabel; QLabel * myAnnounceTimeNextLabel; QLabel * myAnnounceResponseLabel; QLabel * myAnnounceManualLabel; TrackerModel * myTrackerModel; TrackerModelFilter * myTrackerFilter; TrackerDelegate * myTrackerDelegate; QTreeView * myTrackerView; //QMap myTrackerTiers; //QMap myTrackerItems; QTreeWidget * myPeerTree; QMap myPeers; QWidgetList myWidgets; FileTreeView * myFileTreeView; private slots: void refreshPref( int key ); void onBandwidthPriorityChanged( int ); void onFilePriorityChanged( const QSet& fileIndices, int ); void onFileWantedChanged( const QSet& fileIndices, bool ); void onHonorsSessionLimitsToggled( bool ); void onDownloadLimitedToggled( bool ); void onSpinBoxEditingFinished( ); void onUploadLimitedToggled( bool ); void onRatioModeChanged( int ); void onIdleModeChanged( int ); void onShowTrackerScrapesToggled( bool ); void onShowBackupTrackersToggled( bool ); void onTrackerSelectionChanged( ); void onAddTrackerClicked( ); void onEditTrackerClicked( ); void onRemoveTrackerClicked( ); void refresh( ); }; #endif