VLCSidebarController.m 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*****************************************************************************
  2. * VLCSidebarController.m
  3. * VLC for iOS
  4. *****************************************************************************
  5. * Copyright (c) 2015 VideoLAN. All rights reserved.
  6. * $Id$
  7. *
  8. * Author: Felix Paul Kühne <fkuehne # videolan.org>
  9. *
  10. * Refer to the COPYING file of the official project for license.
  11. *****************************************************************************/
  12. #import "VLCSidebarController.h"
  13. #import "VLCMenuTableViewController.h"
  14. #import "UIViewController+RESideMenu.h"
  15. #import "RESideMenu.h"
  16. @interface VLCSidebarController()
  17. {
  18. RESideMenu *_sideMenuViewController;
  19. VLCMenuTableViewController *_menuViewController;
  20. UIViewController *_contentViewController;
  21. }
  22. @end
  23. @implementation VLCSidebarController
  24. + (instancetype)sharedInstance
  25. {
  26. static VLCSidebarController *sharedInstance = nil;
  27. static dispatch_once_t pred;
  28. dispatch_once(&pred, ^{
  29. sharedInstance = [VLCSidebarController new];
  30. });
  31. return sharedInstance;
  32. }
  33. - (instancetype)init
  34. {
  35. self = [super init];
  36. if (!self)
  37. return self;
  38. _menuViewController = [[VLCMenuTableViewController alloc] initWithNibName:nil bundle:nil];
  39. if ([UIApplication sharedApplication].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) {
  40. _sideMenuViewController = [[RESideMenu alloc] initWithContentViewController:nil
  41. leftMenuViewController:_menuViewController
  42. rightMenuViewController:nil];
  43. } else {
  44. _sideMenuViewController = [[RESideMenu alloc] initWithContentViewController:nil
  45. leftMenuViewController:nil
  46. rightMenuViewController:_menuViewController];
  47. }
  48. _sideMenuViewController.backgroundImage = [UIImage imageNamed:@"menu-background"];
  49. return self;
  50. }
  51. #pragma mark - VC handling
  52. - (UIViewController *)fullViewController
  53. {
  54. return _sideMenuViewController;
  55. }
  56. - (void)setContentViewController:(UIViewController *)contentViewController
  57. {
  58. contentViewController.view.backgroundColor = [UIColor VLCMenuBackgroundColor];
  59. _sideMenuViewController.contentViewController = contentViewController;
  60. }
  61. - (UIViewController *)contentViewController
  62. {
  63. return _sideMenuViewController.contentViewController;
  64. }
  65. #pragma mark - actual work
  66. - (void)selectRowAtIndexPath:(NSIndexPath *)indexPath scrollPosition:(UITableViewScrollPosition)scrollPosition
  67. {
  68. [_menuViewController selectRowAtIndexPath:indexPath
  69. animated:NO
  70. scrollPosition:scrollPosition];
  71. }
  72. - (void)hideSidebar
  73. {
  74. [_sideMenuViewController hideMenuViewController];
  75. }
  76. - (void)toggleSidebar
  77. {
  78. if ([UIApplication sharedApplication].userInterfaceLayoutDirection == UIUserInterfaceLayoutDirectionLeftToRight) {
  79. [_sideMenuViewController presentLeftMenuViewController];
  80. } else {
  81. [_sideMenuViewController presentRightMenuViewController];
  82. }
  83. }
  84. @end