1
0
Fork 0
mirror of https://github.com/transmission/transmission synced 2025-03-03 10:15:45 +00:00

add an all/any button to the group rules sheet

This commit is contained in:
Mitchell Livingston 2008-12-13 17:18:28 +00:00
parent 0272708d32
commit 3368de5d44
5 changed files with 184 additions and 25 deletions

View file

@ -197,13 +197,13 @@
<object class="NSTextField" id="332791107">
<reference key="NSNextResponder" ref="464768712"/>
<int key="NSvFlags">270</int>
<string key="NSFrame">{{17, 81}, {437, 17}}</string>
<string key="NSFrame">{{76, 81}, {378, 17}}</string>
<reference key="NSSuperview" ref="464768712"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="835481534">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">272629760</int>
<string key="NSContents">description</string>
<string key="NSContents">criteria mustbe met to assign a transfer on add.</string>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">1.300000e+01</double>
@ -222,6 +222,72 @@
</object>
</object>
</object>
<object class="NSPopUpButton" id="197810941">
<reference key="NSNextResponder" ref="464768712"/>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 77}, {57, 22}}</string>
<reference key="NSSuperview" ref="464768712"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="292386544">
<int key="NSCellFlags">-2076049856</int>
<int key="NSCellFlags2">133120</int>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">1.100000e+01</double>
<int key="NSfFlags">3100</int>
</object>
<reference key="NSControlView" ref="197810941"/>
<int key="NSButtonFlags">109199615</int>
<int key="NSButtonFlags2">129</int>
<string key="NSAlternateContents"/>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
<object class="NSMenuItem" key="NSMenuItem" id="47707498">
<reference key="NSMenu" ref="533472230"/>
<string key="NSTitle">All</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
<object class="NSCustomResource" key="NSOnImage" id="205784288">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
<object class="NSCustomResource" key="NSMixedImage" id="293296343">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="292386544"/>
</object>
<bool key="NSMenuItemRespectAlignment">YES</bool>
<object class="NSMenu" key="NSMenu" id="533472230">
<string key="NSTitle">OtherViews</string>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="47707498"/>
<object class="NSMenuItem" id="627736956">
<reference key="NSMenu" ref="533472230"/>
<string key="NSTitle">Any</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="205784288"/>
<reference key="NSMixedImage" ref="293296343"/>
<string key="NSAction">_popUpItemAction:</string>
<int key="NSTag">1</int>
<reference key="NSTarget" ref="292386544"/>
</object>
</object>
<bool key="NSNoAutoenable">YES</bool>
</object>
<int key="NSPreferredEdge">1</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
<int key="NSArrowPosition">2</int>
</object>
</object>
</object>
<string key="NSFrameSize">{471, 118}</string>
<reference key="NSSuperview"/>
@ -298,6 +364,14 @@
</object>
<int key="connectionID">22</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">fRulesAllAnyButton</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="197810941"/>
</object>
<int key="connectionID">30</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@ -345,8 +419,9 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="929052796"/>
<reference ref="1048345917"/>
<reference ref="332791107"/>
<reference ref="772030743"/>
<reference ref="197810941"/>
<reference ref="332791107"/>
</object>
<reference key="parent" ref="154698973"/>
</object>
@ -418,6 +493,44 @@
<reference key="object" ref="1052460241"/>
<reference key="parent" ref="929052796"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">23</int>
<reference key="object" ref="197810941"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="292386544"/>
</object>
<reference key="parent" ref="464768712"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">24</int>
<reference key="object" ref="292386544"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="533472230"/>
</object>
<reference key="parent" ref="197810941"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">25</int>
<reference key="object" ref="533472230"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="47707498"/>
<reference ref="627736956"/>
</object>
<reference key="parent" ref="292386544"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">26</int>
<reference key="object" ref="47707498"/>
<reference key="parent" ref="533472230"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">27</int>
<reference key="object" ref="627736956"/>
<reference key="parent" ref="533472230"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@ -439,6 +552,12 @@
<string>11.IBPluginDependency</string>
<string>12.IBPluginDependency</string>
<string>2.IBPluginDependency</string>
<string>23.IBPluginDependency</string>
<string>24.IBPluginDependency</string>
<string>25.IBEditorWindowLastContentRect</string>
<string>25.IBPluginDependency</string>
<string>26.IBPluginDependency</string>
<string>27.IBPluginDependency</string>
<string>3.IBPluginDependency</string>
<string>4.IBPluginDependency</string>
<string>5.IBPluginDependency</string>
@ -466,6 +585,12 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{291, 385}, {84, 37}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@ -493,7 +618,7 @@
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">22</int>
<int key="maxID">30</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@ -536,6 +661,7 @@
<string>fGroupRulesPrefsContainer</string>
<string>fGroupRulesSheetWindow</string>
<string>fRuleEditor</string>
<string>fRulesAllAnyButton</string>
<string>fRulesSheetCancelButton</string>
<string>fRulesSheetDescriptionField</string>
<string>fRulesSheetOKButton</string>
@ -553,6 +679,7 @@
<string>NSView</string>
<string>NSWindow</string>
<string>NSRuleEditor</string>
<string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSTextField</string>
<string>NSButton</string>

View file

@ -57,6 +57,9 @@
- (NSArray *) autoAssignRulesForIndex: (NSInteger) index;
- (void) setAutoAssignRules: (NSArray *) rules forIndex: (NSInteger) index;
- (BOOL) rulesNeedAllForIndex: (NSInteger) index;
- (void) setRulesNeedAllForIndex: (BOOL) all forIndex: (NSInteger) index;
- (void) addNewGroup;
- (void) removeGroupWithRowIndex: (NSInteger) row;

View file

@ -239,6 +239,25 @@ GroupsController * fGroupsInstance = nil;
}
}
- (BOOL) rulesNeedAllForIndex: (NSInteger) index
{
NSInteger orderIndex = [self rowValueForIndex: index];
if (orderIndex == -1)
return YES;
NSNumber * enforceAll = [[fGroups objectAtIndex: orderIndex] objectForKey: @"AssignRulesNeedAll"];
return !enforceAll || [enforceAll boolValue];
}
- (void) setRulesNeedAllForIndex: (BOOL) all forIndex: (NSInteger) index
{
NSMutableDictionary * group = [fGroups objectAtIndex: [self rowValueForIndex: index]];
[group setObject: [NSNumber numberWithBool: all] forKey: @"AssignRulesNeedAll"];
[[GroupsController groups] saveGroups];
}
- (void) addNewGroup
{
//find the lowest index
@ -430,7 +449,8 @@ GroupsController * fGroupsInstance = nil;
if (!rules || [rules count] == 0)
return NO;
#warning should rules be dict instead of array?
const BOOL needAll = [self rulesNeedAllForIndex: index];
NSEnumerator * iterator = [rules objectEnumerator];
NSArray * rule = nil;
while ((rule = [iterator nextObject]))
@ -444,39 +464,36 @@ GroupsController * fGroupsInstance = nil;
else
continue;
BOOL match = NO;
NSStringCompareOptions options = NSCaseInsensitiveSearch;
if ([place isEqualToString: @"ends"])
options += NSBackwardsSearch;
BOOL match = NO;
NSEnumerator * enumerator = [values objectEnumerator];
NSString * value;
while (!match && (value = [enumerator nextObject]))
{
NSRange result = [value rangeOfString: givenValue options: options];
if ([place isEqualToString: @"begins"])
{
if (result.location == 0)
match = YES;
}
match = result.location == 0;
else if ([place isEqualToString: @"contains"])
{
if (result.location != NSNotFound)
match = YES;
}
match = result.location != NSNotFound;
else if ([place isEqualToString: @"ends"])
{
if (NSMaxRange(result) == [value length])
match = YES;
}
match = NSMaxRange(result) == [value length];
else
break;
}
if (!match)
if (match && !needAll)
return YES;
else if (!match && needAll)
return NO;
else;
}
return YES;
return needAll;
}
@end

View file

@ -44,6 +44,7 @@
IBOutlet NSButton * fRulesSheetOKButton, * fRulesSheetCancelButton;
IBOutlet NSTextField * fRulesSheetDescriptionField;
IBOutlet NSPopUpButton * fRulesAllAnyButton;
}
- (void) addRemoveGroup: (id) sender;

View file

@ -33,6 +33,9 @@
#define ADD_TAG 0
#define REMOVE_TAG 1
#define RULES_ALL_TAG 0
#define RULES_ANY_TAG 1
@interface GroupsPrefsController (Private)
- (void) updateSelectedGroup;
@ -55,8 +58,13 @@
[fRulesSheetOKButton setStringValue: NSLocalizedString(@"OK", "Groups -> rule editor -> button")];
[fRulesSheetCancelButton setStringValue: NSLocalizedString(@"Cancel", "Groups -> rule editor -> button")];
[fRulesSheetDescriptionField setStringValue: NSLocalizedString(@"All criteria must be met to assign a transfer on add.",
"Groups -> rule editor -> button")];
[fRulesSheetDescriptionField setStringValue: NSLocalizedString(@"criteria must be met to assign a transfer on add.",
"Groups -> rule editor -> button (All/Any criteria must....)")];
[[fRulesAllAnyButton itemAtIndex: [fRulesAllAnyButton indexOfItemWithTag: RULES_ALL_TAG]] setTitle:
NSLocalizedString(@"All", "Groups -> rule editor -> all/any")];
[[fRulesAllAnyButton itemAtIndex: [fRulesAllAnyButton indexOfItemWithTag: RULES_ANY_TAG]] setTitle:
NSLocalizedString(@"Any", "Groups -> rule editor -> all/any")];
[fSelectedColorView addObserver: self forKeyPath: @"color" options: 0 context: NULL];
@ -272,7 +280,7 @@
[fRuleEditor removeRowsAtIndexes: [NSIndexSet indexSetWithIndexesInRange: NSMakeRange(0, [fRuleEditor numberOfRows])]
includeSubrows: YES];
NSInteger index = [[GroupsController groups] indexForRow: [fTableView selectedRow]];
const NSInteger index = [[GroupsController groups] indexForRow: [fTableView selectedRow]];
NSArray * rules = [[GroupsController groups] autoAssignRulesForIndex: index];
if (rules)
{
@ -282,10 +290,12 @@
[fRuleEditor setCriteria: [rules objectAtIndex: i] andDisplayValues: [NSArray array] forRowAtIndex: i];
}
}
if ([fRuleEditor numberOfRows] == 0)
[fRuleEditor addRow: nil];
[fRulesAllAnyButton selectItemWithTag: [[GroupsController groups] rulesNeedAllForIndex: index] ? RULES_ALL_TAG : RULES_ANY_TAG];
[NSApp beginSheet: fGroupRulesSheetWindow modalForWindow: [fTableView window] modalDelegate: nil didEndSelector: NULL
contextInfo: NULL];
}
@ -310,6 +320,7 @@
[NSApp endSheet: fGroupRulesSheetWindow];
NSInteger index = [[GroupsController groups] indexForRow: [fTableView selectedRow]];
[[GroupsController groups] setRulesNeedAllForIndex: [[fRulesAllAnyButton selectedItem] tag] == RULES_ALL_TAG forIndex: index];
[[GroupsController groups] setUsesAutoAssignRules: YES forIndex: index];
NSMutableArray * rules = [NSMutableArray arrayWithCapacity: [fRuleEditor numberOfRows]];