2007-09-16 01:02:06 +00:00
|
|
|
/******************************************************************************
|
2019-01-11 18:36:19 +00:00
|
|
|
* Copyright (c) 2005-2019 Transmission authors and contributors
|
2007-09-16 01:02:06 +00:00
|
|
|
*
|
|
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
|
|
* to deal in the Software without restriction, including without limitation
|
|
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
|
|
*
|
|
|
|
* The above copyright notice and this permission notice shall be included in
|
|
|
|
* all copies or substantial portions of the Software.
|
|
|
|
*
|
|
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
|
|
* DEALINGS IN THE SOFTWARE.
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#import <Cocoa/Cocoa.h>
|
2009-10-11 23:16:46 +00:00
|
|
|
#import <Quartz/Quartz.h>
|
2018-09-30 10:37:30 +00:00
|
|
|
|
2021-09-24 12:56:57 +00:00
|
|
|
#import <Sparkle/SUUpdaterDelegate.h>
|
|
|
|
|
2018-09-30 10:37:30 +00:00
|
|
|
#include <libtransmission/transmission.h>
|
|
|
|
|
2013-01-19 05:03:00 +00:00
|
|
|
#import "VDKQueue.h"
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2010-04-12 00:55:31 +00:00
|
|
|
@class AddMagnetWindowController;
|
2009-10-11 02:22:38 +00:00
|
|
|
@class AddWindowController;
|
|
|
|
@class Badger;
|
|
|
|
@class DragOverlayWindow;
|
2011-02-20 03:58:50 +00:00
|
|
|
@class FilterBarController;
|
2009-10-11 02:22:38 +00:00
|
|
|
@class InfoWindowController;
|
|
|
|
@class MessageWindowController;
|
|
|
|
@class PrefsController;
|
2011-02-20 00:22:55 +00:00
|
|
|
@class StatusBarController;
|
2009-10-11 02:22:38 +00:00
|
|
|
@class Torrent;
|
|
|
|
@class TorrentTableView;
|
2011-02-10 00:51:25 +00:00
|
|
|
@class URLSheetWindowController;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
typedef NS_ENUM(unsigned int, addType) { //
|
2008-05-27 00:52:18 +00:00
|
|
|
ADD_MANUAL,
|
2008-05-26 21:39:30 +00:00
|
|
|
ADD_AUTO,
|
2008-01-05 02:48:10 +00:00
|
|
|
ADD_SHOW_OPTIONS,
|
|
|
|
ADD_URL,
|
|
|
|
ADD_CREATED
|
2021-08-07 07:27:56 +00:00
|
|
|
};
|
2008-01-05 02:48:10 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
@interface Controller
|
2021-09-24 12:56:57 +00:00
|
|
|
: NSObject<NSApplicationDelegate, NSURLDownloadDelegate, NSUserNotificationCenterDelegate, NSPopoverDelegate, NSSharingServiceDelegate, NSSharingServicePickerDelegate, NSSoundDelegate, NSToolbarDelegate, NSWindowDelegate, QLPreviewPanelDataSource, QLPreviewPanelDelegate, VDKQueueDelegate, SUUpdaterDelegate>
|
2007-09-16 01:02:06 +00:00
|
|
|
{
|
2021-08-15 09:41:48 +00:00
|
|
|
IBOutlet NSWindow* fWindow;
|
|
|
|
IBOutlet TorrentTableView* fTableView;
|
2008-06-19 02:53:45 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
IBOutlet NSMenuItem* fOpenIgnoreDownloadFolder;
|
|
|
|
IBOutlet NSButton* fActionButton;
|
|
|
|
IBOutlet NSButton* fSpeedLimitButton;
|
|
|
|
IBOutlet NSButton* fClearCompletedButton;
|
|
|
|
IBOutlet NSTextField* fTotalTorrentsField;
|
|
|
|
IBOutlet NSMenuItem* fNextFilterItem;
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
IBOutlet NSMenuItem* fNextInfoTabItem;
|
|
|
|
IBOutlet NSMenuItem* fPrevInfoTabItem;
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
IBOutlet NSMenu* fSortMenu;
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
IBOutlet NSMenu* fGroupsSetMenu;
|
|
|
|
IBOutlet NSMenu* fGroupsSetContextMenu;
|
2017-01-24 17:53:16 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
IBOutlet NSMenu* fShareMenu;
|
|
|
|
IBOutlet NSMenu* fShareContextMenu;
|
|
|
|
IBOutlet NSMenuItem* fShareMenuItem; // remove when dropping 10.6
|
|
|
|
IBOutlet NSMenuItem* fShareContextMenuItem; // remove when dropping 10.6
|
2007-09-16 01:02:06 +00:00
|
|
|
}
|
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)openFiles:(NSArray*)filenames addType:(addType)type forcePath:(NSString*)path;
|
2009-11-25 04:11:52 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)askOpenConfirmed:(AddWindowController*)addController add:(BOOL)add;
|
|
|
|
- (void)openCreatedFile:(NSNotification*)notification;
|
|
|
|
- (void)openFilesWithDict:(NSDictionary*)dictionary;
|
|
|
|
- (void)openShowSheet:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)openMagnet:(NSString*)address;
|
|
|
|
- (void)askOpenMagnetConfirmed:(AddMagnetWindowController*)addController add:(BOOL)add;
|
2010-04-12 00:55:31 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)invalidOpenAlert:(NSString*)filename;
|
|
|
|
- (void)invalidOpenMagnetAlert:(NSString*)address;
|
|
|
|
- (void)duplicateOpenAlert:(NSString*)name;
|
|
|
|
- (void)duplicateOpenMagnetAlert:(NSString*)address transferName:(NSString*)name;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)openURL:(NSString*)urlString;
|
|
|
|
- (void)openURLShowSheet:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
@property(nonatomic, readonly) tr_session* sessionHandle;
|
2012-05-27 22:31:58 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)createFile:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)resumeSelectedTorrents:(id)sender;
|
|
|
|
- (void)resumeAllTorrents:(id)sender;
|
|
|
|
- (void)resumeTorrents:(NSArray*)torrents;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)resumeSelectedTorrentsNoWait:(id)sender;
|
|
|
|
- (void)resumeWaitingTorrents:(id)sender;
|
|
|
|
- (void)resumeTorrentsNoWait:(NSArray*)torrents;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)stopSelectedTorrents:(id)sender;
|
|
|
|
- (void)stopAllTorrents:(id)sender;
|
|
|
|
- (void)stopTorrents:(NSArray*)torrents;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)removeTorrents:(NSArray*)torrents deleteData:(BOOL)deleteData;
|
|
|
|
- (void)confirmRemoveTorrents:(NSArray*)torrents deleteData:(BOOL)deleteData;
|
|
|
|
- (void)removeNoDelete:(id)sender;
|
|
|
|
- (void)removeDeleteData:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)clearCompleted:(id)sender;
|
2011-02-13 02:02:13 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)moveDataFilesSelected:(id)sender;
|
|
|
|
- (void)moveDataFiles:(NSArray*)torrents;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)copyTorrentFiles:(id)sender;
|
|
|
|
- (void)copyTorrentFileForTorrents:(NSMutableArray*)torrents;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)copyMagnetLinks:(id)sender;
|
2009-12-04 13:35:15 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)revealFile:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (IBAction)renameSelected:(id)sender;
|
2013-01-22 00:09:48 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)announceSelectedTorrents:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)verifySelectedTorrents:(id)sender;
|
|
|
|
- (void)verifyTorrents:(NSArray*)torrents;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
@property(nonatomic, readonly) NSArray* selectedTorrents;
|
2014-01-09 16:23:54 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
@property(nonatomic, readonly) PrefsController* prefsController;
|
|
|
|
- (void)showPreferenceWindow:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)showAboutWindow:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)showInfo:(id)sender;
|
|
|
|
- (void)resetInfo;
|
|
|
|
- (void)setInfoTab:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
@property(nonatomic, readonly) MessageWindowController* messageWindowController;
|
|
|
|
- (void)showMessageWindow:(id)sender;
|
|
|
|
- (void)showStatsWindow:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)updateUI;
|
|
|
|
- (void)fullUpdateUI;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)setBottomCountText:(BOOL)filtering;
|
2008-02-06 23:45:44 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (Torrent*)torrentForHash:(NSString*)hash;
|
2012-07-25 12:49:11 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)torrentFinishedDownloading:(NSNotification*)notification;
|
|
|
|
- (void)torrentRestartedDownloading:(NSNotification*)notification;
|
|
|
|
- (void)torrentFinishedSeeding:(NSNotification*)notification;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)updateTorrentHistory;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)applyFilter;
|
2008-01-23 17:22:41 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)sortTorrents:(BOOL)includeQueueOrder;
|
|
|
|
- (void)sortTorrentsCallUpdates:(BOOL)callUpdates includeQueueOrder:(BOOL)includeQueueOrder;
|
|
|
|
- (void)rearrangeTorrentTableArray:(NSMutableArray*)rearrangeArray
|
|
|
|
forParent:(id)parent
|
|
|
|
withSortDescriptors:(NSArray*)descriptors
|
|
|
|
beganTableUpdate:(BOOL*)beganTableUpdate;
|
|
|
|
- (void)setSort:(id)sender;
|
|
|
|
- (void)setSortByGroup:(id)sender;
|
|
|
|
- (void)setSortReverse:(id)sender;
|
2007-12-17 19:47:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)switchFilter:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (IBAction)showGlobalPopover:(id)sender;
|
2011-07-23 15:54:02 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)setGroup:(id)sender; //used by delegate-generated menu items
|
2007-12-17 16:06:20 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)toggleSpeedLimit:(id)sender;
|
|
|
|
- (void)speedLimitChanged:(id)sender;
|
|
|
|
- (void)altSpeedToggledCallbackIsLimited:(NSDictionary*)dict;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)changeAutoImport;
|
|
|
|
- (void)checkAutoImportDirectory;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)beginCreateFile:(NSNotification*)notification;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)sleepCallback:(natural_t)messageType argument:(void*)messageArgument;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
@property(nonatomic, readonly) VDKQueue* fileWatcherQueue;
|
2013-01-19 05:03:00 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)torrentTableViewSelectionDidChange:(NSNotification*)notification;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)toggleSmallView:(id)sender;
|
|
|
|
- (void)togglePiecesBar:(id)sender;
|
|
|
|
- (void)toggleAvailabilityBar:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)toggleStatusBar:(id)sender;
|
|
|
|
- (void)showStatusBar:(BOOL)show animate:(BOOL)animate;
|
|
|
|
- (void)toggleFilterBar:(id)sender;
|
|
|
|
- (void)showFilterBar:(BOOL)show animate:(BOOL)animate;
|
|
|
|
- (void)focusFilterField;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)allToolbarClicked:(id)sender;
|
|
|
|
- (void)selectedToolbarClicked:(id)sender;
|
2007-12-06 17:21:42 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)setWindowSizeToFit;
|
|
|
|
@property(nonatomic, readonly) NSRect sizedWindowFrame;
|
|
|
|
- (void)updateForAutoSize;
|
|
|
|
- (void)setWindowMinMaxToCurrent;
|
|
|
|
@property(nonatomic, readonly) CGFloat minWindowContentSizeAllowed;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)updateForExpandCollape;
|
2008-02-06 23:45:44 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)showMainWindow:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)toggleQuickLook:(id)sender;
|
2008-05-21 15:45:27 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)linkHomepage:(id)sender;
|
|
|
|
- (void)linkForums:(id)sender;
|
|
|
|
- (void)linkGitHub:(id)sender;
|
|
|
|
- (void)linkDonate:(id)sender;
|
2007-09-16 01:02:06 +00:00
|
|
|
|
2021-08-15 09:41:48 +00:00
|
|
|
- (void)rpcCallback:(tr_rpc_callback_type)type forTorrentStruct:(struct tr_torrent*)torrentStruct;
|
|
|
|
- (void)rpcAddTorrentStruct:(struct tr_torrent*)torrentStruct;
|
|
|
|
- (void)rpcRemoveTorrent:(Torrent*)torrent deleteData:(BOOL)deleteData;
|
|
|
|
- (void)rpcStartedStoppedTorrent:(Torrent*)torrent;
|
|
|
|
- (void)rpcChangedTorrent:(Torrent*)torrent;
|
|
|
|
- (void)rpcMovedTorrent:(Torrent*)torrent;
|
|
|
|
- (void)rpcUpdateQueue;
|
2008-05-20 15:16:34 +00:00
|
|
|
|
2007-09-16 01:02:06 +00:00
|
|
|
@end
|