diff --git a/macosx/Controller.h b/macosx/Controller.h
index 87044b771..0a4e072fe 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -61,11 +61,6 @@
IBOutlet StatusBarView * fStatusBar;
IBOutlet NSTextField * fTotalDLField, * fTotalULField, * fTotalTorrentsField;
- IBOutlet NSMenuItem * fNameSortItem, * fStateSortItem, * fProgressSortItem,
- * fTrackerSortItem, * fDateSortItem, * fOrderSortItem,
- * fNameSortActionItem, * fStateSortActionItem, * fProgressSortActionItem,
- * fTrackerSortActionItem, * fDateSortActionItem, * fOrderSortActionItem;
-
IBOutlet StatusBarView * fFilterBar;
IBOutlet NSButton * fNoFilterButton, * fDownloadFilterButton, * fSeedFilterButton, * fPauseFilterButton;
IBOutlet NSSearchField * fSearchFilterField;
diff --git a/macosx/Controller.m b/macosx/Controller.m
index ae73fe72e..5cb883385 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -58,6 +58,16 @@
#define SORT_TRACKER @"Tracker"
#define SORT_ORDER @"Order"
+typedef enum
+{
+ SORT_ORDER_TAG = 0,
+ SORT_DATE_TAG = 1,
+ SORT_NAME_TAG = 2,
+ SORT_PROGRESS_TAG = 3,
+ SORT_STATE_TAG = 4,
+ SORT_TRACKER_TAG = 5
+} sortTag;
+
#define FILTER_NONE @"None"
#define FILTER_DOWNLOAD @"Download"
#define FILTER_SEED @"Seed"
@@ -292,47 +302,6 @@ void sleepCallBack(void * controller, io_service_t y, natural_t messageType, voi
[history release];
}
- //set sort
- #warning clean up
- NSString * sortType = [fDefaults stringForKey: @"Sort"];
-
- NSMenuItem * currentSortItem, * currentSortActionItem;
- if ([sortType isEqualToString: SORT_NAME])
- {
- currentSortItem = fNameSortItem;
- currentSortActionItem = fNameSortActionItem;
- }
- else if ([sortType isEqualToString: SORT_STATE])
- {
- currentSortItem = fStateSortItem;
- currentSortActionItem = fStateSortActionItem;
- }
- else if ([sortType isEqualToString: SORT_PROGRESS])
- {
- currentSortItem = fProgressSortItem;
- currentSortActionItem = fProgressSortActionItem;
- }
- else if ([sortType isEqualToString: SORT_TRACKER])
- {
- currentSortItem = fTrackerSortItem;
- currentSortActionItem = fTrackerSortActionItem;
- }
- else if ([sortType isEqualToString: SORT_ORDER])
- {
- currentSortItem = fOrderSortItem;
- currentSortActionItem = fOrderSortActionItem;
- }
- else
- {
- //safety
- if (![sortType isEqualToString: SORT_DATE])
- [fDefaults setObject: SORT_DATE forKey: @"Sort"];
- currentSortItem = fDateSortItem;
- currentSortActionItem = fDateSortActionItem;
- }
- [currentSortItem setState: NSOnState];
- [currentSortActionItem setState: NSOnState];
-
//set filter
NSString * filterType = [fDefaults stringForKey: @"Filter"];
@@ -1709,93 +1678,39 @@ void sleepCallBack(void * controller, io_service_t y, natural_t messageType, voi
- (void) setSort: (id) sender
{
- NSString * oldSortType = [fDefaults stringForKey: @"Sort"];
-
- //get checked items
- NSMenuItem * prevSortItem, * prevSortActionItem;
- if ([oldSortType isEqualToString: SORT_NAME])
+ NSString * sortType;
+ switch ([sender tag])
{
- prevSortItem = fNameSortItem;
- prevSortActionItem = fNameSortActionItem;
- }
- else if ([oldSortType isEqualToString: SORT_STATE])
- {
- prevSortItem = fStateSortItem;
- prevSortActionItem = fStateSortActionItem;
- }
- else if ([oldSortType isEqualToString: SORT_PROGRESS])
- {
- prevSortItem = fProgressSortItem;
- prevSortActionItem = fProgressSortActionItem;
- }
- else if ([oldSortType isEqualToString: SORT_TRACKER])
- {
- prevSortItem = fTrackerSortItem;
- prevSortActionItem = fTrackerSortActionItem;
- }
- else if ([oldSortType isEqualToString: SORT_ORDER])
- {
- prevSortItem = fOrderSortItem;
- prevSortActionItem = fOrderSortActionItem;
- }
- else
- {
- prevSortItem = fDateSortItem;
- prevSortActionItem = fDateSortActionItem;
- }
-
- if (sender != prevSortItem && sender != prevSortActionItem)
- {
- //get new items to check
- NSMenuItem * currentSortItem, * currentSortActionItem;
- NSString * sortType;
- if (sender == fNameSortItem || sender == fNameSortActionItem)
- {
- currentSortItem = fNameSortItem;
- currentSortActionItem = fNameSortActionItem;
- sortType = SORT_NAME;
- }
- else if (sender == fStateSortItem || sender == fStateSortActionItem)
- {
- currentSortItem = fStateSortItem;
- currentSortActionItem = fStateSortActionItem;
- sortType = SORT_STATE;
- }
- else if (sender == fProgressSortItem || sender == fProgressSortActionItem)
- {
- currentSortItem = fProgressSortItem;
- currentSortActionItem = fProgressSortActionItem;
- sortType = SORT_PROGRESS;
- }
- else if (sender == fTrackerSortItem || sender == fTrackerSortActionItem)
- {
- currentSortItem = fTrackerSortItem;
- currentSortActionItem = fTrackerSortActionItem;
- sortType = SORT_TRACKER;
- }
- else if (sender == fOrderSortItem || sender == fOrderSortActionItem)
- {
- currentSortItem = fOrderSortItem;
- currentSortActionItem = fOrderSortActionItem;
+ case SORT_ORDER_TAG:
sortType = SORT_ORDER;
-
[fDefaults setBool: NO forKey: @"SortReverse"];
- }
- else
- {
- currentSortItem = fDateSortItem;
- currentSortActionItem = fDateSortActionItem;
+ break;
+
+ case SORT_DATE_TAG:
sortType = SORT_DATE;
- }
+ break;
- [fDefaults setObject: sortType forKey: @"Sort"];
-
- [prevSortItem setState: NSOffState];
- [prevSortActionItem setState: NSOffState];
- [currentSortItem setState: NSOnState];
- [currentSortActionItem setState: NSOnState];
+ case SORT_NAME_TAG:
+ sortType = SORT_NAME;
+ break;
+
+ case SORT_PROGRESS_TAG:
+ sortType = SORT_PROGRESS;
+ break;
+
+ case SORT_STATE_TAG:
+ sortType = SORT_STATE;
+ break;
+
+ case SORT_TRACKER_TAG:
+ sortType = SORT_TRACKER;
+ break;
+
+ default:
+ return;
}
-
+
+ [fDefaults setObject: sortType forKey: @"Sort"];
[self sortTorrents];
}
@@ -2001,7 +1916,7 @@ void sleepCallBack(void * controller, io_service_t y, natural_t messageType, voi
[self applyFilter: nil];
}
-#warning improve
+#warning improve with matrix
- (void) switchFilter: (id) sender
{
NSString * filterType = [fDefaults stringForKey: @"Filter"];
@@ -2858,7 +2773,35 @@ void sleepCallBack(void * controller, io_service_t y, natural_t messageType, voi
//enable sort options
if (action == @selector(setSort:))
+ {
+ NSString * sortType;
+ switch ([menuItem tag])
+ {
+ case SORT_ORDER_TAG:
+ sortType = SORT_ORDER;
+ break;
+ case SORT_DATE_TAG:
+ sortType = SORT_DATE;
+ break;
+ case SORT_NAME_TAG:
+ sortType = SORT_NAME;
+ break;
+ case SORT_PROGRESS_TAG:
+ sortType = SORT_PROGRESS;
+ break;
+ case SORT_STATE_TAG:
+ sortType = SORT_STATE;
+ break;
+ case SORT_TRACKER_TAG:
+ sortType = SORT_TRACKER;
+ break;
+ default:
+ sortType = @"";
+ }
+
+ [menuItem setState: [sortType isEqualToString: [fDefaults stringForKey: @"Sort"]] ? NSOnState : NSOffState];
return [fWindow isVisible];
+ }
if (action == @selector(toggleSmallView:))
{
diff --git a/macosx/English.lproj/MainMenu.nib/classes.nib b/macosx/English.lproj/MainMenu.nib/classes.nib
index a23cce249..4c90bdf54 100644
--- a/macosx/English.lproj/MainMenu.nib/classes.nib
+++ b/macosx/English.lproj/MainMenu.nib/classes.nib
@@ -145,10 +145,6 @@
fActionButton
NSButton
- fDateSortActionItem
- NSMenuItem
- fDateSortItem
- NSMenuItem
fDockMenu
NSMenu
fDownloadFilterButton
@@ -161,10 +157,6 @@
NSMenuItem
fFilterBar
StatusBarView
- fNameSortActionItem
- NSMenuItem
- fNameSortItem
- NSMenuItem
fNextFilterItem
NSMenuItem
fNextInfoTabItem
@@ -173,20 +165,12 @@
NSButton
fOpenIgnoreDownloadFolder
NSMenuItem
- fOrderSortActionItem
- NSMenuItem
- fOrderSortItem
- NSMenuItem
fPauseFilterButton
NSButton
fPrevFilterItem
NSMenuItem
fPrevInfoTabItem
NSMenuItem
- fProgressSortActionItem
- NSMenuItem
- fProgressSortItem
- NSMenuItem
fScrollView
NSScrollView
fSearchFilterField
@@ -195,10 +179,6 @@
NSButton
fSpeedLimitButton
NSButton
- fStateSortActionItem
- NSMenuItem
- fStateSortItem
- NSMenuItem
fStatusBar
StatusBarView
fTableView
@@ -209,10 +189,6 @@
NSTextField
fTotalULField
NSTextField
- fTrackerSortActionItem
- NSMenuItem
- fTrackerSortItem
- NSMenuItem
fURLSheetTextField
NSTextField
fURLSheetWindow
@@ -290,21 +266,13 @@
SUPERCLASS
NSPopUpButton
-
- CLASS
- ImageBackgroundView
- LANGUAGE
- ObjC
- SUPERCLASS
- NSView
-
CLASS
StatusBarView
LANGUAGE
ObjC
SUPERCLASS
- ImageBackgroundView
+ NSView
IBVersion
diff --git a/macosx/English.lproj/MainMenu.nib/info.nib b/macosx/English.lproj/MainMenu.nib/info.nib
index 3ca84a6bb..d4ab2a89e 100644
--- a/macosx/English.lproj/MainMenu.nib/info.nib
+++ b/macosx/English.lproj/MainMenu.nib/info.nib
@@ -10,7 +10,8 @@
5
IBOpenObjects
- 2
+ 1639
+ 1895
IBSystem Version
9A581
diff --git a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib
index e1b1049cd..b8c4dc4ca 100644
Binary files a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib and b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib differ
diff --git a/macosx/StatusBarView.m b/macosx/StatusBarView.m
index 9d6633fbb..0736dcf6d 100644
--- a/macosx/StatusBarView.m
+++ b/macosx/StatusBarView.m
@@ -29,13 +29,13 @@
- (id) initWithFrame: (NSRect) rect
{
- if ((self = [super initWithFrame: rect]))
+ if ((self = [super initWithFrame: rect]))
{
NSColor * beginningColor = [NSColor colorWithCalibratedRed: 208.0/255.0 green: 208.0/255.0 blue: 208.0/255.0 alpha: 1.0];
NSColor * endingColor = [NSColor colorWithCalibratedRed: 233.0/255.0 green: 233.0/255.0 blue: 233.0/255.0 alpha: 1.0];
fGradient = [[CTGradient gradientWithBeginningColor: beginningColor endingColor: endingColor] retain];
- }
- return self;
+ }
+ return self;
}
- (void) dealloc