hopefully this makes the inspector less confusing once and for all....use popup buttons instead of checks

This commit is contained in:
Mitchell Livingston 2007-02-07 05:01:07 +00:00
parent 603a374a6b
commit 6c85eee3f8
4 changed files with 84 additions and 47 deletions

View File

@ -8,7 +8,7 @@
revealDataFile = id; revealDataFile = id;
revealFile = id; revealFile = id;
revealTorrentFile = id; revealTorrentFile = id;
setLimitCheck = id; setLimitSetting = id;
setRatioLimit = id; setRatioLimit = id;
setRatioSetting = id; setRatioSetting = id;
setSpeedLimit = id; setSpeedLimit = id;
@ -23,9 +23,9 @@
fDataLocationField = NSTextField; fDataLocationField = NSTextField;
fDateCreatedField = NSTextField; fDateCreatedField = NSTextField;
fDateStartedField = NSTextField; fDateStartedField = NSTextField;
fDownloadLimitCheck = NSButton;
fDownloadLimitField = NSTextField; fDownloadLimitField = NSTextField;
fDownloadLimitLabel = NSTextField; fDownloadLimitLabel = NSTextField;
fDownloadLimitPopUp = NSPopUpButton;
fDownloadedTotalField = NSTextField; fDownloadedTotalField = NSTextField;
fDownloadedValidField = NSTextField; fDownloadedValidField = NSTextField;
fDownloadingFromField = NSTextField; fDownloadingFromField = NSTextField;
@ -39,9 +39,9 @@
fPeerTable = NSTableView; fPeerTable = NSTableView;
fPiecesField = NSTextField; fPiecesField = NSTextField;
fPiecesView = PiecesView; fPiecesView = PiecesView;
fRatioCheck = NSButton;
fRatioField = NSTextField; fRatioField = NSTextField;
fRatioLimitField = NSTextField; fRatioLimitField = NSTextField;
fRatioPopUp = NSPopUpButton;
fRevealDataButton = NSButton; fRevealDataButton = NSButton;
fRevealTorrentButton = NSButton; fRevealTorrentButton = NSButton;
fSecureField = NSTextField; fSecureField = NSTextField;
@ -52,9 +52,9 @@
fTabView = NSTabView; fTabView = NSTabView;
fTorrentLocationField = NSTextField; fTorrentLocationField = NSTextField;
fTrackerField = NSTextField; fTrackerField = NSTextField;
fUploadLimitCheck = NSButton;
fUploadLimitField = NSTextField; fUploadLimitField = NSTextField;
fUploadLimitLabel = NSTextField; fUploadLimitLabel = NSTextField;
fUploadLimitPopUp = NSPopUpButton;
fUploadedTotalField = NSTextField; fUploadedTotalField = NSTextField;
fUploadingToField = NSTextField; fUploadingToField = NSTextField;
}; };

View File

@ -56,7 +56,7 @@
IBOutlet NSOutlineView * fFileOutline; IBOutlet NSOutlineView * fFileOutline;
IBOutlet NSTextField * fFileTableStatusField; IBOutlet NSTextField * fFileTableStatusField;
IBOutlet NSButton * fRatioCheck, * fUploadLimitCheck, * fDownloadLimitCheck; IBOutlet NSPopUpButton * fRatioPopUp, * fUploadLimitPopUp, * fDownloadLimitPopUp;
IBOutlet NSTextField * fUploadLimitField, * fDownloadLimitField, * fRatioLimitField, IBOutlet NSTextField * fUploadLimitField, * fDownloadLimitField, * fRatioLimitField,
* fUploadLimitLabel, * fDownloadLimitLabel; * fUploadLimitLabel, * fDownloadLimitLabel;
} }
@ -71,7 +71,7 @@
- (void) revealDataFile: (id) sender; - (void) revealDataFile: (id) sender;
- (void) revealFile: (id) sender; - (void) revealFile: (id) sender;
- (void) setLimitCheck: (id) sender; - (void) setLimitSetting: (id) sender;
- (void) setSpeedLimit: (id) sender; - (void) setSpeedLimit: (id) sender;
- (void) setRatioSetting: (id) sender; - (void) setRatioSetting: (id) sender;

View File

@ -41,7 +41,11 @@
#define TAB_ACTIVITY_HEIGHT 170.0 #define TAB_ACTIVITY_HEIGHT 170.0
#define TAB_PEERS_HEIGHT 268.0 #define TAB_PEERS_HEIGHT 268.0
#define TAB_FILES_HEIGHT 268.0 #define TAB_FILES_HEIGHT 268.0
#define TAB_OPTIONS_HEIGHT 112.0 #define TAB_OPTIONS_HEIGHT 117.0
#define OPTION_POPUP_GLOBAL 0
#define OPTION_POPUP_NO_LIMIT 1
#define OPTION_POPUP_LIMIT 2
#define INVALID -99 #define INVALID -99
@ -58,6 +62,9 @@
- (void) setFileCheckState: (int) state forItem: (NSMutableDictionary *) item; - (void) setFileCheckState: (int) state forItem: (NSMutableDictionary *) item;
- (NSMutableDictionary *) resetFileCheckStateForItemParent: (NSMutableDictionary *) originalChild; - (NSMutableDictionary *) resetFileCheckStateForItemParent: (NSMutableDictionary *) originalChild;
- (int) stateSettingToPopUpIndex: (int) index;
- (int) popUpIndexToStateSetting: (int) index;
@end @end
@implementation InfoWindowController @implementation InfoWindowController
@ -399,36 +406,36 @@
uploadLimit = [torrent uploadLimit], uploadLimit = [torrent uploadLimit],
downloadLimit = [torrent downloadLimit]; downloadLimit = [torrent downloadLimit];
while ((checkUpload != NSMixedState || uploadLimit != INVALID while ((checkUpload != INVALID || uploadLimit != INVALID
|| checkDownload != NSMixedState || downloadLimit != INVALID) || checkDownload != INVALID || downloadLimit != INVALID)
&& (torrent = [enumerator nextObject])) && (torrent = [enumerator nextObject]))
{ {
if (checkUpload != NSMixedState && checkUpload != [torrent checkUpload]) if (checkUpload != INVALID && checkUpload != [torrent checkUpload])
checkUpload = NSMixedState; checkUpload = INVALID;
if (uploadLimit != INVALID && uploadLimit != [torrent uploadLimit]) if (uploadLimit != INVALID && uploadLimit != [torrent uploadLimit])
uploadLimit = INVALID; uploadLimit = INVALID;
if (checkDownload != NSMixedState && checkDownload != [torrent checkDownload]) if (checkDownload != INVALID && checkDownload != [torrent checkDownload])
checkDownload = NSMixedState; checkDownload = INVALID;
if (downloadLimit != INVALID && downloadLimit != [torrent downloadLimit]) if (downloadLimit != INVALID && downloadLimit != [torrent downloadLimit])
downloadLimit = INVALID; downloadLimit = INVALID;
} }
[fUploadLimitCheck setEnabled: YES]; [fUploadLimitPopUp setEnabled: YES];
[fUploadLimitCheck setState: checkUpload]; [fUploadLimitPopUp selectItemAtIndex: [self stateSettingToPopUpIndex: checkUpload]];
[fUploadLimitLabel setEnabled: checkUpload == NSOnState]; [fUploadLimitLabel setHidden: checkUpload != NSOnState];
[fUploadLimitField setEnabled: checkUpload == NSOnState]; [fUploadLimitField setHidden: checkUpload != NSOnState];
if (uploadLimit != INVALID) if (uploadLimit != INVALID)
[fUploadLimitField setIntValue: uploadLimit]; [fUploadLimitField setIntValue: uploadLimit];
else else
[fUploadLimitField setStringValue: @""]; [fUploadLimitField setStringValue: @""];
[fDownloadLimitCheck setEnabled: YES]; [fDownloadLimitPopUp setEnabled: YES];
[fDownloadLimitCheck setState: checkDownload]; [fDownloadLimitPopUp selectItemAtIndex: [self stateSettingToPopUpIndex: checkDownload]];
[fDownloadLimitLabel setEnabled: checkDownload == NSOnState]; [fDownloadLimitLabel setHidden: checkDownload != NSOnState];
[fDownloadLimitField setEnabled: checkDownload == NSOnState]; [fDownloadLimitField setHidden: checkDownload != NSOnState];
if (downloadLimit != INVALID) if (downloadLimit != INVALID)
[fDownloadLimitField setIntValue: downloadLimit]; [fDownloadLimitField setIntValue: downloadLimit];
else else
@ -438,22 +445,22 @@
enumerator = [fTorrents objectEnumerator]; enumerator = [fTorrents objectEnumerator];
torrent = [enumerator nextObject]; //first torrent torrent = [enumerator nextObject]; //first torrent
int ratioSetting = [torrent ratioSetting]; int checkRatio = [torrent ratioSetting];
float ratioLimit = [torrent ratioLimit]; float ratioLimit = [torrent ratioLimit];
while ((ratioSetting != NSMixedState || ratioLimit != INVALID) while ((checkRatio != INVALID || checkRatio != INVALID)
&& (torrent = [enumerator nextObject])) && (torrent = [enumerator nextObject]))
{ {
if (ratioSetting != NSMixedState && ratioSetting != [torrent ratioSetting]) if (checkRatio != INVALID && checkRatio != [torrent ratioSetting])
ratioSetting = NSMixedState; checkRatio = INVALID;
if (ratioLimit != INVALID && ratioLimit != [torrent ratioLimit]) if (ratioLimit != INVALID && ratioLimit != [torrent ratioLimit])
ratioLimit = INVALID; ratioLimit = INVALID;
} }
[fRatioCheck setEnabled: YES]; [fRatioPopUp setEnabled: YES];
[fRatioCheck setState: ratioSetting]; [fRatioPopUp selectItemAtIndex: [self stateSettingToPopUpIndex: checkRatio]];
[fRatioLimitField setEnabled: ratioSetting == NSOnState]; [fRatioLimitField setHidden: checkRatio != NSOnState];
if (ratioLimit != INVALID) if (ratioLimit != INVALID)
[fRatioLimitField setFloatValue: ratioLimit]; [fRatioLimitField setFloatValue: ratioLimit];
else else
@ -461,27 +468,51 @@
} }
else else
{ {
[fUploadLimitCheck setEnabled: NO]; [fUploadLimitPopUp setEnabled: NO];
[fUploadLimitCheck setState: NSOffState]; [fUploadLimitPopUp selectItemAtIndex: -1];
[fUploadLimitField setEnabled: NO]; [fUploadLimitField setHidden: YES];
[fUploadLimitLabel setHidden: YES];
[fUploadLimitField setStringValue: @""]; [fUploadLimitField setStringValue: @""];
[fUploadLimitLabel setEnabled: NO];
[fDownloadLimitCheck setEnabled: NO]; [fDownloadLimitPopUp setEnabled: NO];
[fDownloadLimitCheck setState: NSOffState]; [fDownloadLimitPopUp selectItemAtIndex: -1];
[fDownloadLimitField setEnabled: NO]; [fDownloadLimitField setHidden: YES];
[fDownloadLimitLabel setHidden: YES];
[fDownloadLimitField setStringValue: @""]; [fDownloadLimitField setStringValue: @""];
[fDownloadLimitLabel setEnabled: NO];
[fRatioCheck setEnabled: NO]; [fRatioPopUp setEnabled: NO];
[fRatioCheck setState: NSOffState]; [fRatioPopUp selectItemAtIndex: -1];
[fRatioLimitField setEnabled: NO]; [fRatioLimitField setHidden: YES];
[fRatioLimitField setStringValue: @""]; [fRatioLimitField setStringValue: @""];
} }
[self updateInfoStats]; [self updateInfoStats];
} }
- (int) stateSettingToPopUpIndex: (int) index
{
if (index == NSOnState)
return OPTION_POPUP_LIMIT;
else if (index == NSOffState)
return OPTION_POPUP_NO_LIMIT;
else if (index == NSMixedState)
return OPTION_POPUP_GLOBAL;
else
return -1;
}
- (int) popUpIndexToStateSetting: (int) index
{
if (index == OPTION_POPUP_LIMIT)
return NSOnState;
else if (index == OPTION_POPUP_NO_LIMIT)
return NSOffState;
else if (index == OPTION_POPUP_GLOBAL)
return NSMixedState;
else
return INVALID;
}
- (BOOL) validateMenuItem: (NSMenuItem *) menuItem - (BOOL) validateMenuItem: (NSMenuItem *) menuItem
{ {
SEL action = [menuItem action]; SEL action = [menuItem action];
@ -808,18 +839,22 @@
[[fFileOutline itemAtRow: i] objectForKey: @"Path"]] inFileViewerRootedAtPath: nil]; [[fFileOutline itemAtRow: i] objectForKey: @"Path"]] inFileViewerRootedAtPath: nil];
} }
- (void) setLimitCheck: (id) sender - (void) setLimitSetting: (id) sender
{ {
BOOL upload = sender == fUploadLimitCheck; BOOL upload = sender == fUploadLimitPopUp;
int state = [sender state]; int setting;
if ((setting = [self popUpIndexToStateSetting: [sender indexOfSelectedItem]]) == INVALID)
return;
Torrent * torrent; Torrent * torrent;
NSEnumerator * enumerator = [fTorrents objectEnumerator]; NSEnumerator * enumerator = [fTorrents objectEnumerator];
while ((torrent = [enumerator nextObject])) while ((torrent = [enumerator nextObject]))
upload ? [torrent setCheckUpload: state] : [torrent setCheckDownload: state]; upload ? [torrent setCheckUpload: setting] : [torrent setCheckDownload: setting];
NSTextField * field = upload ? fUploadLimitField : fDownloadLimitField; NSTextField * field = upload ? fUploadLimitField : fDownloadLimitField;
[field setEnabled: state == NSOnState]; [field setHidden: setting != NSOnState];
NSTextField * label = upload ? fUploadLimitLabel : fDownloadLimitLabel;
[label setHidden: setting != NSOnState];
} }
- (void) setSpeedLimit: (id) sender - (void) setSpeedLimit: (id) sender
@ -854,14 +889,16 @@
- (void) setRatioSetting: (id) sender - (void) setRatioSetting: (id) sender
{ {
int state = [sender state]; int setting;
if ((setting = [self popUpIndexToStateSetting: [sender indexOfSelectedItem]]) == INVALID)
return;
Torrent * torrent; Torrent * torrent;
NSEnumerator * enumerator = [fTorrents objectEnumerator]; NSEnumerator * enumerator = [fTorrents objectEnumerator];
while ((torrent = [enumerator nextObject])) while ((torrent = [enumerator nextObject]))
[torrent setRatioSetting: state]; [torrent setRatioSetting: setting];
[fRatioLimitField setEnabled: state == NSOnState]; [fRatioLimitField setHidden: setting != NSOnState];
} }
- (void) setRatioLimit: (id) sender - (void) setRatioLimit: (id) sender