diff --git a/Classes/ObjectExplorers/FLEXObjectExplorerFactory.m b/Classes/ObjectExplorers/FLEXObjectExplorerFactory.m index e4deefe343..efa1311326 100644 --- a/Classes/ObjectExplorers/FLEXObjectExplorerFactory.m +++ b/Classes/ObjectExplorers/FLEXObjectExplorerFactory.m @@ -10,6 +10,7 @@ #import "FLEXGlobalsViewController.h" #import "FLEXClassShortcuts.h" #import "FLEXViewShortcuts.h" +#import "FLEXWindowShortcuts.h" #import "FLEXViewControllerShortcuts.h" #import "FLEXUIAppShortcuts.h" #import "FLEXImageShortcuts.h" @@ -48,6 +49,7 @@ + (void)initialize { ClassKey(UIViewController) : [FLEXViewControllerShortcuts class], ClassKey(UIApplication) : [FLEXUIAppShortcuts class], ClassKey(UIView) : [FLEXViewShortcuts class], + ClassKey(UIWindow) : [FLEXWindowShortcuts class], ClassKey(UIImage) : [FLEXImageShortcuts class], ClassKey(CALayer) : [FLEXLayerShortcuts class], ClassKey(UIColor) : [FLEXColorPreviewSection class], diff --git a/Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.h b/Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.h new file mode 100644 index 0000000000..8df04f6562 --- /dev/null +++ b/Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.h @@ -0,0 +1,13 @@ +// +// FLEXWindowShortcuts.h +// FLEX +// +// Created by AnthoPak on 26/09/2022. +// + +#import "FLEXShortcutsSection.h" + +/// Adds "Animations Speed" shortcut for all windows +@interface FLEXWindowShortcuts : FLEXShortcutsSection + +@end diff --git a/Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.m b/Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.m new file mode 100644 index 0000000000..55333b4068 --- /dev/null +++ b/Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.m @@ -0,0 +1,46 @@ +// +// FLEXWindowShortcuts.m +// FLEX +// +// Created by AnthoPak on 26/09/2022. +// + +#import "FLEXWindowShortcuts.h" +#import "FLEXShortcut.h" +#import "FLEXAlert.h" +#import "FLEXObjectExplorerViewController.h" + +@implementation FLEXWindowShortcuts + +#pragma mark - Overrides + ++ (instancetype)forObject:(UIView *)view { + return [self forObject:view additionalRows:@[ + [FLEXActionShortcut title:@"Animation Speed" subtitle:^NSString *(UIWindow *window) { + return [NSString stringWithFormat:@"Current speed: %.2f", window.layer.speed]; + } selectionHandler:^(UIViewController *host, UIWindow *window) { + [FLEXAlert makeAlert:^(FLEXAlert *make) { + make.title(@"Change Animation Speed"); + make.message([NSString stringWithFormat:@"Current speed: %.2f", window.layer.speed]); + make.configuredTextField(^(UITextField * _Nonnull textField) { + textField.placeholder = @"Default: 1.0"; + textField.keyboardType = UIKeyboardTypeDecimalPad; + }); + + make.button(@"OK").handler(^(NSArray *strings) { + CGFloat speedValue = strings.firstObject.floatValue; + window.layer.speed = speedValue; + + // Refresh the host view controller to update the shortcut subtitle, reflecting current speed + // TODO: this shouldn't be necessary + [(FLEXObjectExplorerViewController *)host reloadData]; + }); + make.button(@"Cancel").cancelStyle(); + } showFrom:host]; + } accessoryType:^UITableViewCellAccessoryType(id _Nonnull object) { + return UITableViewCellAccessoryDisclosureIndicator; + }] + ]]; +} + +@end