Skip to content

Commit

Permalink
Allow changing UIWindow's animation speed (FLEXTool#629)
Browse files Browse the repository at this point in the history
  • Loading branch information
AnthoPakPak authored and Tim Johnsen committed May 1, 2023
1 parent 795b25d commit 6986316
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Classes/ObjectExplorers/FLEXObjectExplorerFactory.m
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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],
Expand Down
13 changes: 13 additions & 0 deletions Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.h
Original file line number Diff line number Diff line change
@@ -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
46 changes: 46 additions & 0 deletions Classes/ObjectExplorers/Sections/Shortcuts/FLEXWindowShortcuts.m
Original file line number Diff line number Diff line change
@@ -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<NSString *> *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

0 comments on commit 6986316

Please sign in to comment.