1 /****************************************************************************** 2 * Copyright (c) 2005-2019 Transmission authors and contributors 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a 5 * copy of this software and associated documentation files (the "Software"), 6 * to deal in the Software without restriction, including without limitation 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8 * and/or sell copies of the Software, and to permit persons to whom the 9 * Software is furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 20 * DEALINGS IN THE SOFTWARE. 21 *****************************************************************************/ 22 23 #import <Cocoa/Cocoa.h> 24 25 #include <libtransmission/transmission.h> 26 27 @class PortChecker; 28 29 @interface PrefsController : NSWindowController <NSToolbarDelegate> 30 { 31 tr_session * fHandle; 32 NSUserDefaults * fDefaults; 33 BOOL fHasLoaded; 34 35 IBOutlet NSView * fGeneralView, * fTransfersView, * fBandwidthView, * fPeersView, * fNetworkView, * fRemoteView, * fGroupsView; 36 37 NSString * fInitialString; 38 39 IBOutlet NSButton *fSystemPreferencesButton; 40 IBOutlet NSTextField * fCheckForUpdatesLabel; 41 IBOutlet NSButton * fCheckForUpdatesButton, * fCheckForUpdatesBetaButton; 42 43 IBOutlet NSPopUpButton * fFolderPopUp, * fIncompleteFolderPopUp, * fImportFolderPopUp, * fDoneScriptPopUp; 44 IBOutlet NSButton * fShowMagnetAddWindowCheck; 45 IBOutlet NSTextField * fRatioStopField, * fIdleStopField, * fQueueDownloadField, * fQueueSeedField, * fStalledField; 46 47 IBOutlet NSTextField * fUploadField, * fDownloadField, 48 * fSpeedLimitUploadField, * fSpeedLimitDownloadField; 49 IBOutlet NSPopUpButton * fAutoSpeedDayTypePopUp; 50 51 IBOutlet NSTextField * fPeersGlobalField, * fPeersTorrentField, 52 * fBlocklistURLField, * fBlocklistMessageField, * fBlocklistDateField; 53 IBOutlet NSButton * fBlocklistButton; 54 55 PortChecker * fPortChecker; 56 IBOutlet NSTextField * fPortField, * fPortStatusField; 57 IBOutlet NSButton * fNatCheck; 58 IBOutlet NSImageView * fPortStatusImage; 59 IBOutlet NSProgressIndicator * fPortStatusProgress; 60 NSTimer * fPortStatusTimer; 61 int fPeerPort, fNatStatus; 62 63 IBOutlet NSTextField * fRPCPortField, * fRPCPasswordField; 64 IBOutlet NSTableView * fRPCWhitelistTable; 65 NSMutableArray * fRPCWhitelistArray; 66 IBOutlet NSSegmentedControl * fRPCAddRemoveControl; 67 NSString * fRPCPassword; 68 } 69 70 - (id) initWithHandle: (tr_session *) handle; 71 72 - (void) setAutoUpdateToBeta: (id) sender; 73 74 - (void) setPort: (id) sender; 75 - (void) randomPort: (id) sender; 76 - (void) setRandomPortOnStart: (id) sender; 77 - (void) setNat: (id) sender; 78 - (void) updatePortStatus; 79 - (void) portCheckerDidFinishProbing: (PortChecker *) portChecker; 80 81 - (NSArray *) sounds; 82 - (void) setSound: (id) sender; 83 84 - (void) setUTP: (id) sender; 85 86 - (void) setPeersGlobal: (id) sender; 87 - (void) setPeersTorrent: (id) sender; 88 89 - (void) setPEX: (id) sender; 90 - (void) setDHT: (id) sender; 91 - (void) setLPD: (id) sender; 92 93 - (void) setEncryptionMode: (id) sender; 94 95 - (void) setBlocklistEnabled: (id) sender; 96 - (void) updateBlocklist: (id) sender; 97 - (void) setBlocklistAutoUpdate: (id) sender; 98 - (void) updateBlocklistFields; 99 - (void) updateBlocklistURLField; 100 - (void) updateBlocklistButton; 101 102 - (void) setAutoStartDownloads: (id) sender; 103 104 - (void) setBadge: (id) sender; 105 106 - (IBAction) openNotificationSystemPrefs: (NSButton *) sender; 107 108 - (void) resetWarnings: (id) sender; 109 110 - (void) setDefaultForMagnets: (id) sender; 111 112 - (void) setQueue: (id) sender; 113 - (void) setQueueNumber: (id) sender; 114 115 - (void) setStalled: (id) sender; 116 - (void) setStalledMinutes: (id) sender; 117 118 - (void) setDownloadLocation: (id) sender; 119 - (void) folderSheetShow: (id) sender; 120 - (void) incompleteFolderSheetShow: (id) sender; 121 - (void) setUseIncompleteFolder: (id) sender; 122 123 - (void) setRenamePartialFiles: (id) sender; 124 125 - (IBAction) setShowAddMagnetWindow: (id) sender; 126 - (void) updateShowAddMagnetWindowField; 127 128 - (void) setDoneScriptEnabled: (id) sender; 129 - (void) doneScriptSheetShow: (id) sender; 130 131 - (void) applyRatioSetting: (id) sender; 132 - (void) setRatioStop: (id) sender; 133 - (void) updateRatioStopField; 134 - (void) updateRatioStopFieldOld; 135 136 - (void) applyIdleStopSetting: (id) sender; 137 - (void) setIdleStop: (id) sender; 138 - (void) updateLimitStopField; 139 140 - (void) applySpeedSettings: (id) sender; 141 - (void) applyAltSpeedSettings; 142 143 - (void) updateLimitFields; 144 - (void) setGlobalLimit: (id) sender; 145 146 - (void) setSpeedLimit: (id) sender; 147 - (void) setAutoSpeedLimit: (id) sender; 148 - (void) setAutoSpeedLimitTime: (id) sender; 149 - (void) setAutoSpeedLimitDay: (id) sender; 150 + (NSInteger) dateToTimeSum: (NSDate *) date; 151 + (NSDate *) timeSumToDate: (NSInteger) sum; 152 153 - (void) setAutoImport: (id) sender; 154 - (void) importFolderSheetShow: (id) sender; 155 156 - (void) setAutoSize: (id) sender; 157 158 - (void) setRPCEnabled: (id) sender; 159 - (void) linkWebUI: (id) sender; 160 - (void) setRPCAuthorize: (id) sender; 161 - (void) setRPCUsername: (id) sender; 162 - (void) setRPCPassword: (id) sender; 163 - (void) updateRPCPassword; 164 - (void) setRPCPort: (id) sender; 165 - (void) setRPCUseWhitelist: (id) sender; 166 - (void) setRPCWebUIDiscovery: (id) sender; 167 - (void) updateRPCWhitelist; 168 - (void) addRemoveRPCIP: (id) sender; 169 170 - (void) helpForScript: (id) sender; 171 - (void) helpForPeers: (id) sender; 172 - (void) helpForNetwork: (id) sender; 173 - (void) helpForRemote: (id) sender; 174 175 - (void) rpcUpdatePrefs; 176 177 @end 178