transmission/qt/MainWindow.h

179 lines
4.4 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
2015-06-12 22:12:12 +00:00
public:
MainWindow (Session&, Prefs&, TorrentModel&, bool minized);
virtual ~MainWindow ();
QSystemTrayIcon& trayIcon () { return myTrayIcon; }
2015-06-12 22:12:12 +00:00
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 ();
2015-06-12 22:12:12 +00:00
void setToolbarVisible (bool);
void setFilterbarVisible (bool);
void setStatusbarVisible (bool);
void setCompactView (bool);
void refreshActionSensitivity ();
void refreshActionSensitivitySoon ();
void wrongAuthentication ();
void openSession ();
2015-06-12 22:12:12 +00:00
protected:
// QWidget
virtual void contextMenuEvent (QContextMenuEvent *);
virtual void dragEnterEvent (QDragEnterEvent *);
virtual void dropEvent (QDropEvent *);
private:
2015-06-12 22:12:12 +00:00
QIcon getStockIcon (const QString&, int fallback = -1);
QIcon getStockIcon (const QString&, int fallback, const QStringList& 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 ();
void clearSelection ();
void addTorrent (const AddData& addMe, bool showOptions);
// 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 (const QStringList& filenames);
void removeTorrents (const bool 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, const QString& 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;
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;
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;
QWidgetList myHidden;
QWidget * myFilterBar;
QAction * myAltSpeedAction;
QString myErrorMessage;
2009-04-09 18:55:47 +00:00
};