/
PasteContext.m
80 lines (71 loc) · 2.69 KB
/
PasteContext.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//
// PasteContext.m
// iTerm
//
// Created by George Nachman on 3/12/13.
//
//
#import "PasteContext.h"
#import "iTermAdvancedSettingsModel.h"
#import "PasteEvent.h"
@interface PasteContext ()
@property(nonatomic, copy) NSString *bytesPerCallKey;
@property(nonatomic, copy) NSString *delayBetweenCallsKey;
@end
@implementation PasteContext
- (instancetype)initWithPasteEvent:(PasteEvent *)pasteEvent {
self = [self initWithBytesPerCallPrefKey:pasteEvent.chunkKey
defaultValue:pasteEvent.defaultChunkSize
delayBetweenCallsPrefKey:pasteEvent.delayKey
defaultValue:pasteEvent.defaultDelay
pasteEvent:pasteEvent];
if (self) {
self.blockAtNewline = !!(pasteEvent.flags & kPasteFlagsCommands);
self.isUpload = pasteEvent.isUpload;
self.progress = pasteEvent.progress;
}
return self;
}
- (instancetype)initWithBytesPerCallPrefKey:(NSString*)bytesPerCallKey
defaultValue:(int)bytesPerCallDefault
delayBetweenCallsPrefKey:(NSString*)delayBetweenCallsKey
defaultValue:(float)delayBetweenCallsDefault
pasteEvent:(PasteEvent *)pasteEvent {
self = [super init];
if (self) {
_bytesPerCallKey = [bytesPerCallKey copy];
_bytesPerCall = bytesPerCallDefault;
_delayBetweenCallsKey = [delayBetweenCallsKey copy];
_delayBetweenCalls = delayBetweenCallsDefault;
_pasteEvent = pasteEvent;
[self updateValues];
}
return self;
}
- (void)updateValues {
if (_isUpload && [iTermAdvancedSettingsModel accelerateUploads]) {
_bytesPerCall = 40960;
_delayBetweenCalls = 0.01;
return;
}
if (_bytesPerCallKey && [[NSUserDefaults standardUserDefaults] objectForKey:_bytesPerCallKey]) {
_bytesPerCall = [[NSUserDefaults standardUserDefaults] integerForKey:_bytesPerCallKey];
}
if (_delayBetweenCallsKey && [[NSUserDefaults standardUserDefaults] objectForKey:_delayBetweenCallsKey]) {
_delayBetweenCalls = [[NSUserDefaults standardUserDefaults] floatForKey:_delayBetweenCallsKey];
}
}
- (void)setBytesPerCall:(int)newBytesPerCall {
_bytesPerCall = newBytesPerCall;
if (_bytesPerCallKey) {
[[NSUserDefaults standardUserDefaults] setInteger:_bytesPerCall forKey:_bytesPerCallKey];
}
}
- (void)setDelayBetweenCalls:(float)newDelayBetweenCalls {
_delayBetweenCalls = newDelayBetweenCalls;
if (_delayBetweenCallsKey) {
[[NSUserDefaults standardUserDefaults] setFloat:newDelayBetweenCalls
forKey:_delayBetweenCallsKey];
}
}
@end