diff --git a/macosx/Controller.h b/macosx/Controller.h index 61d8e3706..102047598 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -63,7 +63,9 @@ NSString * fSortType; IBOutlet NSMenuItem * fNameSortItem, * fStateSortItem, * fProgressSortItem, - * fDateSortItem, * fOrderSortItem; + * fDateSortItem, * fOrderSortItem, + * fNameSortActionItem, * fStateSortActionItem, * fProgressSortActionItem, + * fDateSortActionItem, * fOrderSortActionItem; IBOutlet ImageBackgroundView * fFilterBar; BOOL fFilterBarVisible; diff --git a/macosx/Controller.m b/macosx/Controller.m index 88f791824..4477de3e4 100644 --- a/macosx/Controller.m +++ b/macosx/Controller.m @@ -217,18 +217,34 @@ static void sleepCallBack(void * controller, io_service_t y, //set sort fSortType = [[fDefaults stringForKey: @"Sort"] retain]; - NSMenuItem * currentSortItem; + NSMenuItem * currentSortItem, * currentSortActionItem; if ([fSortType isEqualToString: @"Name"]) + { currentSortItem = fNameSortItem; + currentSortActionItem = fNameSortActionItem; + } else if ([fSortType isEqualToString: @"State"]) + { currentSortItem = fStateSortItem; + currentSortActionItem = fStateSortActionItem; + } else if ([fSortType isEqualToString: @"Progress"]) + { currentSortItem = fProgressSortItem; + currentSortActionItem = fProgressSortActionItem; + } else if ([fSortType isEqualToString: @"Date"]) + { currentSortItem = fDateSortItem; + currentSortActionItem = fDateSortActionItem; + } else + { currentSortItem = fOrderSortItem; + currentSortActionItem = fOrderSortActionItem; + } [currentSortItem setState: NSOnState]; + [currentSortActionItem setState: NSOnState]; //set filter fFilterType = [[fDefaults stringForKey: @"Filter"] retain]; @@ -973,35 +989,76 @@ static void sleepCallBack(void * controller, io_service_t y, - (void) setSort: (id) sender { - NSMenuItem * prevSortItem; + //get checked items + NSMenuItem * prevSortItem, * prevSortActionItem; if ([fSortType isEqualToString: @"Name"]) - prevSortItem = fNameSortItem; - else if ([fSortType isEqualToString: @"State"]) - prevSortItem = fStateSortItem; - else if ([fSortType isEqualToString: @"Progress"]) - prevSortItem = fProgressSortItem; - else if ([fSortType isEqualToString: @"Date"]) - prevSortItem = fDateSortItem; - else - prevSortItem = fOrderSortItem; - - if (sender != prevSortItem) { - [prevSortItem setState: NSOffState]; - [sender setState: NSOnState]; - + prevSortItem = fNameSortItem; + prevSortActionItem = fNameSortActionItem; + } + else if ([fSortType isEqualToString: @"State"]) + { + prevSortItem = fStateSortItem; + prevSortActionItem = fStateSortActionItem; + } + else if ([fSortType isEqualToString: @"Progress"]) + { + prevSortItem = fProgressSortItem; + prevSortActionItem = fProgressSortActionItem; + } + else if ([fSortType isEqualToString: @"Date"]) + { + prevSortItem = fDateSortItem; + prevSortActionItem = fDateSortActionItem; + } + else + { + prevSortItem = fOrderSortItem; + prevSortActionItem = fOrderSortActionItem; + } + + if (sender != prevSortItem && sender != prevSortActionItem) + { [fSortType release]; - if (sender == fNameSortItem) + + //get new items to check + NSMenuItem * currentSortItem, * currentSortActionItem; + if (sender == fNameSortItem || sender == fNameSortActionItem) + { + currentSortItem = fNameSortItem; + currentSortActionItem = fNameSortActionItem; fSortType = [[NSString alloc] initWithString: @"Name"]; - else if (sender == fStateSortItem) + } + else if (sender == fStateSortItem || sender == fStateSortActionItem) + { + currentSortItem = fStateSortItem; + currentSortActionItem = fStateSortActionItem; fSortType = [[NSString alloc] initWithString: @"State"]; - else if (sender == fProgressSortItem) + } + else if (sender == fProgressSortItem || sender == fProgressSortActionItem) + { + currentSortItem = fProgressSortItem; + currentSortActionItem = fProgressSortActionItem; fSortType = [[NSString alloc] initWithString: @"Progress"]; - else if (sender == fDateSortItem) + } + else if (sender == fDateSortItem || sender == fDateSortActionItem) + { + currentSortItem = fDateSortItem; + currentSortActionItem = fDateSortActionItem; fSortType = [[NSString alloc] initWithString: @"Date"]; + } else + { + currentSortItem = fOrderSortItem; + currentSortActionItem = fOrderSortActionItem; fSortType = [[NSString alloc] initWithString: @"Order"]; - + } + + [prevSortItem setState: NSOffState]; + [prevSortActionItem setState: NSOffState]; + [currentSortItem setState: NSOnState]; + [currentSortActionItem setState: NSOnState]; + [fDefaults setObject: fSortType forKey: @"Sort"]; } @@ -1667,7 +1724,7 @@ static void sleepCallBack(void * controller, io_service_t y, int state = ![fAdvancedBarItem state]; [fAdvancedBarItem setState: state]; [fDefaults setBool: state forKey: @"UseAdvancedBar"]; - + [fTableView display]; } diff --git a/macosx/English.lproj/MainMenu.nib/classes.nib b/macosx/English.lproj/MainMenu.nib/classes.nib index 9f448446f..12093b166 100644 --- a/macosx/English.lproj/MainMenu.nib/classes.nib +++ b/macosx/English.lproj/MainMenu.nib/classes.nib @@ -39,18 +39,22 @@ OUTLETS = { fActionButton = NSButton; fAdvancedBarItem = NSMenuItem; + fDateSortActionItem = NSMenuItem; fDateSortItem = NSMenuItem; fDownloadFilterButton = BarButton; fDownloadLimitItem = NSMenuItem; fDownloadMenu = NSMenu; fDownloadNoLimitItem = NSMenuItem; fFilterBar = ImageBackgroundView; + fNameSortActionItem = NSMenuItem; fNameSortItem = NSMenuItem; fNextInfoTabItem = NSMenuItem; fNoFilterButton = BarButton; + fOrderSortActionItem = NSMenuItem; fOrderSortItem = NSMenuItem; fPauseFilterButton = BarButton; fPrevInfoTabItem = NSMenuItem; + fProgressSortActionItem = NSMenuItem; fProgressSortItem = NSMenuItem; fRatioNotSetItem = NSMenuItem; fRatioSetItem = NSMenuItem; @@ -61,6 +65,7 @@ fSpeedLimitButton = NSButton; fSpeedLimitDockItem = NSMenuItem; fSpeedLimitItem = NSMenuItem; + fStateSortActionItem = NSMenuItem; fStateSortItem = NSMenuItem; fStatusBar = ImageBackgroundView; fTableView = TorrentTableView; diff --git a/macosx/English.lproj/MainMenu.nib/info.nib b/macosx/English.lproj/MainMenu.nib/info.nib index 3389940fa..6acaeb4ca 100644 --- a/macosx/English.lproj/MainMenu.nib/info.nib +++ b/macosx/English.lproj/MainMenu.nib/info.nib @@ -7,7 +7,7 @@ IBEditorPositions 1041 - 344 478 208 99 0 0 1152 842 + 344 478 208 130 0 0 1152 842 1480 366 546 420 63 0 0 1152 842 1603 @@ -31,9 +31,8 @@ 3 IBOpenObjects - 21 - 1480 29 + 1041 1603 IBSystem Version diff --git a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib index 10ebd03e1..0a4cb23ad 100644 Binary files a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib and b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib differ