1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2024-12-30 19:46:56 +00:00
transmission/qt/MainWindow.h

187 lines
4.5 KiB
C
Raw Normal View History

2009-04-09 18:55:47 +00:00
/*
* This file Copyright (C) 2009-2016 Mnemosyne LLC
2009-04-09 18:55:47 +00:00
*
* It may be used under the GNU GPL versions 2 or 3
* or any future license endorsed by Mnemosyne LLC.
2009-04-09 18:55:47 +00:00
*
*/
#pragma once
2009-04-09 18:55:47 +00:00
#include <ctime>
2015-06-12 22:12:12 +00:00
2009-04-09 18:55:47 +00:00
#include <QMainWindow>
2015-06-12 22:12:12 +00:00
#include <QNetworkReply>
#include <QPointer>
2009-04-09 18:55:47 +00:00
#include <QSet>
#include <QSystemTrayIcon>
#include <QTimer>
#include <QWidgetList>
#include "Filters.h"
#include "TorrentFilter.h"
#include "ui_MainWindow.h"
2009-04-09 18:55:47 +00:00
2015-06-12 22:12:12 +00:00
class QAction;
class QIcon;
class QMenu;
class QStringList;
2015-06-12 22:12:12 +00:00
class AboutDialog;
class AddData;
class DetailsDialog;
class Prefs;
class PrefsDialog;
2009-04-09 18:55:47 +00:00
class Session;
class SessionDialog;
class StatsDialog;
2009-04-09 18:55:47 +00:00
class TorrentDelegate;
class TorrentDelegateMin;
class TorrentModel;
extern "C"
{
struct tr_variant;
}
class MainWindow : public QMainWindow
2009-04-09 18:55:47 +00:00
{
Q_OBJECT
public:
MainWindow(Session&, Prefs&, TorrentModel&, bool minized);
virtual ~MainWindow();
QSystemTrayIcon& trayIcon()
{
return myTrayIcon;
}
public slots:
void startAll();
void startSelected();
void startSelectedNow();
void pauseAll();
void pauseSelected();
void removeSelected();
void deleteSelected();
void verifySelected();
void queueMoveTop();
void queueMoveUp();
void queueMoveDown();
void queueMoveBottom();
void reannounceSelected();
void onNetworkTimer();
void setToolbarVisible(bool);
void setFilterbarVisible(bool);
void setStatusbarVisible(bool);
void setCompactView(bool);
void refreshActionSensitivity();
void refreshActionSensitivitySoon();
void wrongAuthentication();
void openSession();
protected:
2015-06-12 22:12:12 +00:00
// QWidget
virtual void contextMenuEvent(QContextMenuEvent*);
virtual void dragEnterEvent(QDragEnterEvent*);
virtual void dropEvent(QDropEvent*);
private:
QIcon getStockIcon(QString const&, int fallback = -1);
QIcon addEmblem(QIcon icon, QStringList const& emblemNames);
2015-06-12 22:12:12 +00:00
QSet<int> getSelectedTorrents(bool withMetadataOnly = false) const;
void updateNetworkIcon();
2015-06-12 22:12:12 +00:00
QMenu* createOptionsMenu();
QMenu* createStatsModeMenu();
void initStatusBar();
2015-06-12 22:12:12 +00:00
void clearSelection();
void addTorrent(AddData const& addMe, bool showOptions);
2015-06-12 22:12:12 +00:00
// QWidget
virtual void hideEvent(QHideEvent* event);
virtual void showEvent(QShowEvent* event);
private slots:
void openPreferences();
void refreshTitle();
void refreshStatusBar();
void refreshTrayIcon();
void refreshTrayIconSoon();
void refreshTorrentViewHeader();
void openTorrent();
void openURL();
void newTorrent();
void trayActivated(QSystemTrayIcon::ActivationReason);
void refreshPref(int key);
void addTorrents(QStringList const& filenames);
void removeTorrents(bool const deleteFiles);
void openStats();
void openDonate();
void openAbout();
void openHelp();
void openFolder();
void copyMagnetLinkToClipboard();
void setLocation();
void openProperties();
void toggleSpeedMode();
void dataReadProgress();
void dataSendProgress();
void onNetworkResponse(QNetworkReply::NetworkError code, QString const& message);
void toggleWindows(bool doShow);
void onSetPrefs();
void onSetPrefs(bool);
void onSessionSourceChanged();
void onModelReset();
void setSortAscendingPref(bool);
void onStatsModeChanged(QAction* action);
void onSortModeChanged(QAction* action);
private:
2015-06-12 22:12:12 +00:00
Session& mySession;
Prefs& myPrefs;
TorrentModel& myModel;
QPixmap myPixmapNetworkError;
QPixmap myPixmapNetworkIdle;
QPixmap myPixmapNetworkReceive;
QPixmap myPixmapNetworkTransmit;
QPixmap myPixmapNetworkTransmitReceive;
2015-06-12 22:12:12 +00:00
Ui_MainWindow ui;
2015-06-12 22:12:12 +00:00
time_t myLastFullUpdateTime;
QPointer<SessionDialog> mySessionDialog;
QPointer<PrefsDialog> myPrefsDialog;
QPointer<AboutDialog> myAboutDialog;
QPointer<StatsDialog> myStatsDialog;
QPointer<DetailsDialog> myDetailsDialog;
2015-06-12 22:12:12 +00:00
QSystemTrayIcon myTrayIcon;
TorrentFilter myFilterModel;
TorrentDelegate* myTorrentDelegate;
TorrentDelegateMin* myTorrentDelegateMin;
2015-06-12 22:12:12 +00:00
time_t myLastSendTime;
time_t myLastReadTime;
QTimer myNetworkTimer;
bool myNetworkError;
QTimer myRefreshTrayIconTimer;
QTimer myRefreshActionSensitivityTimer;
QAction* myDlimitOffAction;
QAction* myDlimitOnAction;
QAction* myUlimitOffAction;
QAction* myUlimitOnAction;
QAction* myRatioOffAction;
QAction* myRatioOnAction;
2015-06-12 22:12:12 +00:00
QWidgetList myHidden;
QWidget* myFilterBar;
QAction* myAltSpeedAction;
QString myErrorMessage;
2009-04-09 18:55:47 +00:00
};