|
45 | 45 | @interface AppDelegate ()
|
46 | 46 |
|
47 | 47 | @property AppLockViewController* lockScreenVc;
|
48 |
| -@property UIImageView* privacyScreen; |
| 48 | +@property UIView* privacyScreen; |
49 | 49 | @property NSInteger privacyScreenPresentationIdentifier;
|
50 | 50 |
|
51 | 51 | @property (nonatomic, strong) NSDate *appLockEnteredBackgroundAtTime;
|
@@ -342,48 +342,96 @@ - (void)installTopLevelExceptionHandlers {
|
342 | 342 |
|
343 | 343 | - (void)showPrivacyShieldView {
|
344 | 344 | slog(@"showPrivacyShieldView - [%@]", self.privacyScreen);
|
345 |
| - |
| 345 | + |
346 | 346 | if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeNone ) {
|
347 | 347 | return;
|
348 | 348 | }
|
| 349 | + |
| 350 | + if ( self.privacyScreen ) { |
| 351 | + slog(@"Privacy Screen Already in Place... NOP"); |
| 352 | + self.privacyScreenPresentationIdentifier++; |
| 353 | + return; |
| 354 | + } |
| 355 | + |
| 356 | + if ( self.lockScreenVc != nil ) { |
| 357 | + slog(@"Lock Screen is up, privacy screen inappropriate, likely initial launch and switch back..."); |
| 358 | + return; |
| 359 | + } |
| 360 | + |
| 361 | + self.privacyScreen = [self createPrivacyScreenView]; |
| 362 | + self.privacyScreenPresentationIdentifier++; |
| 363 | + |
| 364 | + [self.window addSubview:self.privacyScreen]; |
| 365 | +} |
349 | 366 |
|
| 367 | +- (UIView*)createPrivacyScreenView { |
| 368 | + UIImageView* tmp = [[UIImageView alloc] init]; |
| 369 | + tmp.frame = self.window.frame; |
350 | 370 | UIImage* cover = nil;
|
| 371 | + |
351 | 372 | if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeBlur ) {
|
352 | 373 | UIImage* screenshot = [self screenShot];
|
353 | 374 | cover = [self blur:screenshot];
|
| 375 | + tmp.contentMode = UIViewContentModeScaleToFill; |
354 | 376 | }
|
355 | 377 | else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModePixellate ) {
|
356 | 378 | UIImage* screenshot = [self screenShot];
|
357 | 379 | cover = [self pixellate:screenshot];
|
| 380 | + tmp.contentMode = UIViewContentModeScaleToFill; |
| 381 | + } |
| 382 | + else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeBlueScreen ) { |
| 383 | + tmp.backgroundColor = UIColor.systemBlueColor; |
358 | 384 | }
|
| 385 | + else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeBlackScreen ) { |
| 386 | + tmp.backgroundColor = UIColor.blackColor; |
| 387 | + } |
| 388 | + else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeDarkLogo ) { |
| 389 | + cover = [self createPrivacyShieldLogo]; |
359 | 390 |
|
360 |
| - UIImageView* tmp = [[UIImageView alloc] init]; |
361 |
| - tmp.frame = self.window.frame; |
362 |
| - tmp.contentMode = UIViewContentModeScaleToFill; |
363 |
| - tmp.backgroundColor = UIColor.systemBlueColor; |
364 |
| - |
365 |
| - if ( !self.privacyScreen ) { |
366 |
| - if ( self.lockScreenVc != nil ) { |
367 |
| - slog(@"Lock Screen is up, privacy screen inappropriate, likely initial launch and switch back..."); |
368 |
| - return; |
369 |
| - } |
370 |
| - else { |
371 |
| - slog(@"No Lock Screen up [%@]", cover); |
372 |
| - } |
| 391 | + tmp.backgroundColor = [UIColor colorWithWhite:0.075 alpha:1.0]; |
| 392 | + tmp.contentMode = UIViewContentModeCenter; |
| 393 | + tmp.tintColor = [UIColor colorWithWhite:0.15 alpha:1.0]; |
| 394 | + } |
| 395 | + else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeRed ) { |
| 396 | + tmp.backgroundColor = UIColor.systemRedColor; |
| 397 | + } |
| 398 | + else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeGreen ) { |
| 399 | + tmp.backgroundColor = UIColor.systemGreenColor; |
| 400 | + } |
| 401 | + else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeLightLogo ) { |
| 402 | + cover = [self createPrivacyShieldLogo]; |
373 | 403 |
|
374 |
| - self.privacyScreen = tmp; |
375 |
| - self.privacyScreenPresentationIdentifier++; |
376 |
| - |
377 |
| - [self.window addSubview:self.privacyScreen]; |
378 |
| - |
379 |
| - if ( cover ) { |
380 |
| - self.privacyScreen.image = cover; |
381 |
| - } |
| 404 | + tmp.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1.0]; |
| 405 | + tmp.contentMode = UIViewContentModeCenter; |
| 406 | + tmp.tintColor = UIColor.systemGrayColor; |
| 407 | + } |
| 408 | + else if ( AppPreferences.sharedInstance.appPrivacyShieldMode == kAppPrivacyShieldModeWhite ) { |
| 409 | + tmp.backgroundColor = UIColor.whiteColor; |
382 | 410 | }
|
383 | 411 | else {
|
384 |
| - slog(@"Privacy Screen Already in Place... NOP"); |
385 |
| - self.privacyScreenPresentationIdentifier++; |
| 412 | + slog(@"🔴 Unknown privacy shield mode!"); |
| 413 | + } |
| 414 | + |
| 415 | + if ( cover ) { |
| 416 | + tmp.image = cover; |
386 | 417 | }
|
| 418 | + |
| 419 | + return tmp; |
| 420 | +} |
| 421 | + |
| 422 | +- (UIImage*)createPrivacyShieldLogo { |
| 423 | + UIImage* cover = [UIImage imageNamed:@"AppIcon-2019-Glyph-Shadow"]; |
| 424 | + |
| 425 | + CGFloat divisor = cover.size.width / 128; |
| 426 | + |
| 427 | + CGSize newSize = CGSizeMake(cover.size.width / divisor, cover.size.height / divisor); |
| 428 | + UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:newSize]; |
| 429 | + UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext*_Nonnull myContext) { |
| 430 | + [cover drawInRect:(CGRect) {.origin = CGPointZero, .size = newSize}]; |
| 431 | + }]; |
| 432 | + cover = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; |
| 433 | + |
| 434 | + return cover; |
387 | 435 | }
|
388 | 436 |
|
389 | 437 | - (void)hidePrivacyShield:(NSInteger)identifier {
|
|
0 commit comments