mirror of
https://github.com/transmission/transmission
synced 2024-12-23 08:13:27 +00:00
d7930984ef
There're places where manual intervention is still required as uncrustify is not ideal (unfortunately), but at least one may rely on it to do the right thing most of the time (e.g. when sending in a patch). The style itself is quite different from what we had before but making it uniform across all the codebase is the key. I also hope that it'll make the code more readable (YMMV) and less sensitive to further changes.
180 lines
4.3 KiB
C++
180 lines
4.3 KiB
C++
/*
|
|
* This file Copyright (C) 2009-2016 Mnemosyne LLC
|
|
*
|
|
* It may be used under the GNU GPL versions 2 or 3
|
|
* or any future license endorsed by Mnemosyne LLC.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <ctime>
|
|
|
|
#include <QMainWindow>
|
|
#include <QNetworkReply>
|
|
#include <QPointer>
|
|
#include <QSet>
|
|
#include <QSystemTrayIcon>
|
|
#include <QTimer>
|
|
#include <QWidgetList>
|
|
|
|
#include "Filters.h"
|
|
#include "TorrentFilter.h"
|
|
#include "ui_MainWindow.h"
|
|
|
|
class QAction;
|
|
class QIcon;
|
|
class QMenu;
|
|
class QStringList;
|
|
|
|
class AboutDialog;
|
|
class AddData;
|
|
class DetailsDialog;
|
|
class Prefs;
|
|
class PrefsDialog;
|
|
class Session;
|
|
class SessionDialog;
|
|
class StatsDialog;
|
|
class TorrentDelegate;
|
|
class TorrentDelegateMin;
|
|
class TorrentModel;
|
|
|
|
extern "C"
|
|
{
|
|
struct tr_variant;
|
|
}
|
|
|
|
class MainWindow : public QMainWindow
|
|
{
|
|
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:
|
|
// QWidget
|
|
virtual void contextMenuEvent(QContextMenuEvent*);
|
|
virtual void dragEnterEvent(QDragEnterEvent*);
|
|
virtual void dropEvent(QDropEvent*);
|
|
|
|
private:
|
|
QIcon getStockIcon(const QString&, int fallback = -1);
|
|
QIcon getStockIcon(const QString&, int fallback, const QStringList& emblemNames);
|
|
|
|
QSet<int> getSelectedTorrents(bool withMetadataOnly = false) const;
|
|
void updateNetworkIcon();
|
|
|
|
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:
|
|
Session& mySession;
|
|
Prefs& myPrefs;
|
|
TorrentModel& myModel;
|
|
|
|
Ui_MainWindow ui;
|
|
|
|
time_t myLastFullUpdateTime;
|
|
QPointer<SessionDialog> mySessionDialog;
|
|
QPointer<PrefsDialog> myPrefsDialog;
|
|
QPointer<AboutDialog> myAboutDialog;
|
|
QPointer<StatsDialog> myStatsDialog;
|
|
QPointer<DetailsDialog> myDetailsDialog;
|
|
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;
|
|
};
|