diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2015-07-02 05:33:13 -0700 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2015-07-02 05:33:13 -0700 |
commit | 3d1e6f42e56ceffc0afd18135bc435e8fa66ae22 (patch) | |
tree | 79d0e141a73393c004c326b77d3ec3a51161f2b0 | |
parent | 6c0691af14a7ae3c86339dd0cb95beca980d93d4 (diff) |
Move the saved InterfaceState to a file in Caches.
-rw-r--r-- | MobileCydia.mm | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/MobileCydia.mm b/MobileCydia.mm index 5bedf1c..8d54176 100644 --- a/MobileCydia.mm +++ b/MobileCydia.mm @@ -806,8 +806,11 @@ static CFLocaleRef Locale_; static NSArray *Languages_; static CGColorSpaceRef space_; +#define SavedState_ "/var/mobile/Library/Caches/com.saurik.Cydia/SavedState.plist" + static NSDictionary *SectionMap_; static NSMutableDictionary *Metadata_; +static _H<NSDate> Backgrounded_; static _transient NSMutableDictionary *Settings_; static _transient NSMutableDictionary *Packages_; static _transient NSMutableDictionary *Values_; @@ -9718,10 +9721,11 @@ _end } - (void) saveState { - [Metadata_ setObject:[tabbar_ navigationURLCollection] forKey:@"InterfaceState"]; - [Metadata_ setObject:[NSDate date] forKey:@"LastClosed"]; - [Metadata_ setObject:[NSNumber numberWithInt:[tabbar_ selectedIndex]] forKey:@"InterfaceIndex"]; - Changed_ = true; + [[NSDictionary dictionaryWithObjectsAndKeys: + @"InterfaceState", [tabbar_ navigationURLCollection], + @"LastClosed", [NSDate date], + @"InterfaceIndex", [NSNumber numberWithInt:[tabbar_ selectedIndex]], + nil] writeToFile:@ SavedState_ atomically:YES]; [self _saveConfig]; } @@ -9733,15 +9737,15 @@ _end - (void) applicationDidEnterBackground:(UIApplication *)application { if (kCFCoreFoundationVersionNumber < 1000 && [self isSafeToSuspend]) return [self terminateWithSuccess]; + Backgrounded_ = [NSDate date]; [self saveState]; } - (void) applicationWillEnterForeground:(UIApplication *)application { - NSDate *closed = [Metadata_ objectForKey:@"LastClosed"]; - if (closed == nil) + if (Backgrounded_ == nil) return; - NSTimeInterval interval([closed timeIntervalSinceNow]); + NSTimeInterval interval([Backgrounded_ timeIntervalSinceNow]); if (interval <= -(30*60)) { [tabbar_ setSelectedIndex:0]; @@ -9987,8 +9991,10 @@ _trace(); [self refreshIfPossible]; [self disemulate]; - int savedIndex = [[Metadata_ objectForKey:@"InterfaceIndex"] intValue]; - NSArray *saved = [[[Metadata_ objectForKey:@"InterfaceState"] mutableCopy] autorelease]; + NSDictionary *state([NSDictionary dictionaryWithContentsOfFile:@ SavedState_]); + + int savedIndex = [[state objectForKey:@"InterfaceIndex"] intValue]; + NSArray *saved = [[[state objectForKey:@"InterfaceState"] mutableCopy] autorelease]; int standardIndex = 0; NSArray *standard = [self defaultStartPages]; @@ -9997,7 +10003,7 @@ _trace(); if (saved == nil) valid = NO; - NSDate *closed = [Metadata_ objectForKey:@"LastClosed"]; + NSDate *closed = [state objectForKey:@"LastClosed"]; if (valid && closed != nil) { NSTimeInterval interval([closed timeIntervalSinceNow]); if (interval <= -(30*60)) |