side_menu_items.mm 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #import "remoting/ios/app/side_menu_items.h"
  5. #import <MaterialComponents/MaterialSnackbar.h>
  6. #import "remoting/ios/app/app_delegate.h"
  7. #import "remoting/ios/app/remoting_theme.h"
  8. #import "remoting/ios/persistence/remoting_preferences.h"
  9. #include "remoting/base/string_resources.h"
  10. #include "ui/base/l10n/l10n_util.h"
  11. #if !defined(__has_feature) || !__has_feature(objc_arc)
  12. #error "This file requires ARC support."
  13. #endif
  14. static NSString* const kFeedbackContext = @"SideMenuFeedbackContext";
  15. #pragma mark - SideMenuItem
  16. @implementation SideMenuItem
  17. @synthesize title = _title;
  18. @synthesize icon = _icon;
  19. @synthesize action = _action;
  20. - (instancetype)initWithTitle:(NSString*)title
  21. icon:(UIImage*)icon
  22. action:(SideMenuItemAction)action {
  23. _title = title;
  24. _icon = icon;
  25. _action = action;
  26. return self;
  27. }
  28. @end
  29. #pragma mark - SideMenuItemsProvider
  30. @implementation SideMenuItemsProvider
  31. + (NSArray<NSArray<SideMenuItem*>*>*)sideMenuItems {
  32. static NSArray<NSArray<SideMenuItem*>*>* items = nil;
  33. static dispatch_once_t onceToken;
  34. dispatch_once(&onceToken, ^{
  35. items = @[
  36. #if !defined(NDEBUG)
  37. @[
  38. [[SideMenuItem alloc]
  39. initWithTitle:@"Toggle WebRTC"
  40. icon:RemotingTheme.settingsIcon
  41. action:^{
  42. BOOL newValue = ![RemotingPreferences.instance
  43. boolForFlag:RemotingFlagUseWebRTC];
  44. [RemotingPreferences.instance
  45. setBool:newValue
  46. forFlag:RemotingFlagUseWebRTC];
  47. [RemotingPreferences.instance synchronizeFlags];
  48. NSString* message =
  49. [NSString stringWithFormat:@"Using WebRTC: %s",
  50. newValue ? "Yes" : "No"];
  51. [MDCSnackbarManager.defaultManager
  52. showMessage:[MDCSnackbarMessage
  53. messageWithText:message]];
  54. }],
  55. ],
  56. #endif // !defined(NDEBUG)
  57. @[
  58. [[SideMenuItem alloc]
  59. initWithTitle:l10n_util::GetNSString(IDS_ACTIONBAR_SEND_FEEDBACK)
  60. icon:RemotingTheme.feedbackIcon
  61. action:^{
  62. [AppDelegate.instance
  63. presentFeedbackFlowWithContext:kFeedbackContext];
  64. }],
  65. [[SideMenuItem alloc]
  66. initWithTitle:l10n_util::GetNSString(IDS_ACTIONBAR_HELP)
  67. icon:RemotingTheme.helpIcon
  68. action:^{
  69. [AppDelegate.instance presentHelpCenter];
  70. }],
  71. ]
  72. ];
  73. });
  74. return items;
  75. }
  76. @end