/XeeControllerNavigationActions.m

https://code.google.com/p/xee/ · Objective C · 176 lines · 146 code · 29 blank · 1 comment · 9 complexity · 4ed562e78107088ee2238035574cc5c6 MD5 · raw file

  1. #import "XeeControllerNavigationActions.h"
  2. #import "XeeImageSource.h"
  3. @implementation XeeController (NavigationActions)
  4. -(IBAction)skipNext:(id)sender
  5. {
  6. [self setResizeBlockFromSender:sender];
  7. [source skip:1];
  8. [self setResizeBlock:NO];
  9. }
  10. -(IBAction)skipPrev:(id)sender
  11. {
  12. [self setResizeBlockFromSender:sender];
  13. [source skip:-1];
  14. [self setResizeBlock:NO];
  15. }
  16. -(IBAction)skipFirst:(id)sender
  17. {
  18. [self setResizeBlockFromSender:sender];
  19. [source pickFirstImage];
  20. [self setResizeBlock:NO];
  21. }
  22. -(IBAction)skipLast:(id)sender
  23. {
  24. [self setResizeBlockFromSender:sender];
  25. [source pickLastImage];
  26. [self setResizeBlock:NO];
  27. }
  28. -(IBAction)skip10Forward:(id)sender
  29. {
  30. [self setResizeBlockFromSender:sender];
  31. [source skip:10];
  32. [self setResizeBlock:NO];
  33. }
  34. -(IBAction)skip100Forward:(id)sender
  35. {
  36. [self setResizeBlockFromSender:sender];
  37. [source skip:100];
  38. [self setResizeBlock:NO];
  39. }
  40. -(IBAction)skip10Back:(id)sender
  41. {
  42. [self setResizeBlockFromSender:sender];
  43. [source skip:-10];
  44. [self setResizeBlock:NO];
  45. }
  46. -(IBAction)skip100Back:(id)sender
  47. {
  48. [self setResizeBlockFromSender:sender];
  49. [source skip:-100];
  50. [self setResizeBlock:NO];
  51. }
  52. -(IBAction)skipRandom:(id)sender
  53. {
  54. [self setResizeBlockFromSender:sender];
  55. [source pickNextImageAtRandom];
  56. [self setResizeBlock:NO];
  57. }
  58. -(IBAction)skipRandomPrev:(id)sender
  59. {
  60. [self setResizeBlockFromSender:sender];
  61. [source pickPreviousImageAtRandom];
  62. [self setResizeBlock:NO];
  63. }
  64. -(IBAction)setSortOrder:(id)sender
  65. {
  66. [source setSortOrder:[sender tag]];
  67. }
  68. -(IBAction)runSlideshow:(id)sender
  69. {
  70. if(slideshowtimer)
  71. {
  72. [slideshowtimer invalidate];
  73. [slideshowtimer release];
  74. slideshowtimer=nil;
  75. }
  76. else
  77. {
  78. slideshowcount=0;
  79. slideshowtimer=[[NSTimer scheduledTimerWithTimeInterval:1
  80. target:self selector:@selector(slideshowStep:) userInfo:nil repeats:YES] retain];
  81. }
  82. }
  83. -(IBAction)setSlideshowDelay:(id)sender
  84. {
  85. [[NSUserDefaults standardUserDefaults] setInteger:[sender tag] forKey:@"slideshowDelay"];
  86. }
  87. -(IBAction)setCustomSlideshowDelay:(id)sender
  88. {
  89. if(!delaypanel)
  90. {
  91. NSNib *nib=[[[NSNib alloc] initWithNibNamed:@"SlideshowDelayPanel" bundle:nil] autorelease];
  92. [nib instantiateNibWithOwner:self topLevelObjects:nil];
  93. }
  94. int delay=[[NSUserDefaults standardUserDefaults] integerForKey:@"slideshowCustomDelay"];
  95. if(!delay) delay=[[NSUserDefaults standardUserDefaults] integerForKey:@"slideshowDelay"];
  96. [delayfield setIntValue:delay];
  97. if(fullscreenwindow)
  98. {
  99. [delaypanel makeKeyAndOrderFront:nil];
  100. delaysheet=NO;
  101. }
  102. else
  103. {
  104. [NSApp beginSheet:delaypanel modalForWindow:window modalDelegate:nil didEndSelector:nil contextInfo:nil];
  105. delaysheet=YES;
  106. }
  107. }
  108. -(IBAction)delayPanelOK:(id)sender
  109. {
  110. [[NSUserDefaults standardUserDefaults] setInteger:[delayfield intValue] forKey:@"slideshowCustomDelay"];
  111. [[NSUserDefaults standardUserDefaults] setInteger:[delayfield intValue] forKey:@"slideshowDelay"];
  112. if(delaysheet) [NSApp endSheet:delaypanel];
  113. [delaypanel orderOut:nil];
  114. }
  115. -(IBAction)delayPanelCancel:(id)sender
  116. {
  117. if(delaysheet) [NSApp endSheet:delaypanel];
  118. [delaypanel orderOut:nil];
  119. }
  120. -(void)slideshowStep:(NSTimer *)timer
  121. {
  122. // Prevent sleeping
  123. UpdateSystemActivity(UsrActivity);
  124. int slideshowdelay=[[NSUserDefaults standardUserDefaults] integerForKey:@"slideshowDelay"];
  125. if(++slideshowcount>=slideshowdelay)
  126. {
  127. slideshowcount=0;
  128. if([[NSUserDefaults standardUserDefaults] boolForKey:@"randomizeSlideshow"])
  129. {
  130. [source pickNextImageAtRandom];
  131. }
  132. else
  133. {
  134. if([source indexOfCurrentImage]<[source numberOfImages]-1
  135. ||[[NSUserDefaults standardUserDefaults] boolForKey:@"wrapImageBrowsing"])
  136. [source skip:1];
  137. else
  138. {
  139. [slideshowtimer invalidate];
  140. [slideshowtimer release];
  141. slideshowtimer=nil;
  142. }
  143. }
  144. }
  145. }
  146. -(BOOL)isSlideshowRunning { return slideshowtimer?YES:NO; }
  147. @end