Skip to content
This repository has been archived by the owner on Oct 4, 2018. It is now read-only.

Commit

Permalink
refresh logic, both manual and auto refresh (interval) implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
ashchan committed Mar 13, 2012
1 parent 498af18 commit 54373fa
Show file tree
Hide file tree
Showing 15 changed files with 221 additions and 167 deletions.
4 changes: 4 additions & 0 deletions RubyChinaReader.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
1A1FC5CB15032C26009CDD67 /* RCRTableRowView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1FC5CA15032C25009CDD67 /* RCRTableRowView.m */; };
1A1FC5CE15033875009CDD67 /* RCRUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1FC5CD15033875009CDD67 /* RCRUser.m */; };
1A29596A15079D2700D397E5 /* RCRUrlBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A29596915079D2700D397E5 /* RCRUrlBuilder.m */; };
1A3E12E5150F19B500D0897C /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A3E12E4150F19B500D0897C /* Preferences.xib */; };
1A4FA721150618A200FB6B8D /* Credits.html in Resources */ = {isa = PBXBuildFile; fileRef = 1A4FA720150618A200FB6B8D /* Credits.html */; };
1A6546B1150789F40030C113 /* RCRTopicDetailController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A6546AF150789F40030C113 /* RCRTopicDetailController.m */; };
1A6546B2150789F40030C113 /* RCRTopicDetailController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1A6546B0150789F40030C113 /* RCRTopicDetailController.xib */; };
Expand Down Expand Up @@ -124,6 +125,7 @@
1A1FC5CD15033875009CDD67 /* RCRUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCRUser.m; sourceTree = "<group>"; };
1A29596815079D2700D397E5 /* RCRUrlBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCRUrlBuilder.h; sourceTree = "<group>"; };
1A29596915079D2700D397E5 /* RCRUrlBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCRUrlBuilder.m; sourceTree = "<group>"; };
1A3E12E4150F19B500D0897C /* Preferences.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = "<group>"; };
1A4FA720150618A200FB6B8D /* Credits.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = Credits.html; path = Resources/Credits.html; sourceTree = "<group>"; };
1A6546AE150789F40030C113 /* RCRTopicDetailController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RCRTopicDetailController.h; sourceTree = "<group>"; };
1A6546AF150789F40030C113 /* RCRTopicDetailController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCRTopicDetailController.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -320,6 +322,7 @@
isa = PBXGroup;
children = (
1AFC259414FCDF1100443426 /* MainMenu.xib */,
1A3E12E4150F19B500D0897C /* Preferences.xib */,
1A6AB5561502203A00CC0516 /* RCRTopicsViewController.xib */,
1A6AB5691502318000CC0516 /* RCRAccountViewController.xib */,
1A6AB5641502307800CC0516 /* RCROptionsViewController.xib */,
Expand Down Expand Up @@ -560,6 +563,7 @@
1A4FA721150618A200FB6B8D /* Credits.html in Resources */,
1A9488281506EBE2004B83CA /* RCRUserDetailViewController.xib in Resources */,
1A6546B2150789F40030C113 /* RCRTopicDetailController.xib in Resources */,
1A3E12E5150F19B500D0897C /* Preferences.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
82 changes: 82 additions & 0 deletions RubyChinaReader/Preferences.xib
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="8.00">
<data>
<int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">11D50</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2182</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSCustomObject</string>
</array>
<array key="IBDocument.PluginDependencies">
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</array>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
<integer value="1" key="NS.object.0"/>
</object>
<array class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<object class="NSCustomObject" id="1001">
<string key="NSClassName">NSObject</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
</object>
<object class="NSCustomObject" id="1004">
<string key="NSClassName">NSApplication</string>
</object>
</array>
<object class="IBObjectContainer" key="IBDocument.Objects">
<array class="NSMutableArray" key="connectionRecords"/>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
<object class="IBObjectRecord">
<int key="objectID">0</int>
<array key="object" id="0"/>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">-2</int>
<reference key="object" ref="1001"/>
<reference key="parent" ref="0"/>
<string key="objectName">File's Owner</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-1</int>
<reference key="object" ref="1003"/>
<reference key="parent" ref="0"/>
<string key="objectName">First Responder</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">-3</int>
<reference key="object" ref="1004"/>
<reference key="parent" ref="0"/>
<string key="objectName">Application</string>
</object>
</array>
</object>
<dictionary class="NSMutableDictionary" key="flattenedProperties">
<string key="-1.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-2.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="-3.IBPluginDependency">com.apple.InterfaceBuilder.CocoaPlugin</string>
</dictionary>
<dictionary class="NSMutableDictionary" key="unlocalizedProperties"/>
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">0</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes"/>
<int key="IBDocument.localizationMode">0</int>
<string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
<bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
<int key="IBDocument.defaultPropertyAccessControl">3</int>
<bool key="IBDocument.UseAutolayout">YES</bool>
</data>
</archive>
2 changes: 2 additions & 0 deletions RubyChinaReader/RCRAppController.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,6 @@

+ (RCRAppController *)sharedAppController;

- (void)newTopic;

@end
3 changes: 1 addition & 2 deletions RubyChinaReader/RCRAppController.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ @interface RCRAppController() {
EDSideBar *sideBar;
}

- (void)newTopic;

@end

@implementation RCRAppController
Expand Down Expand Up @@ -103,6 +101,7 @@ - (void)windowDidLoad{
[self.window.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(>=0)-[newTopicButton(==20)]-4-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(newTopicButton)]];

NSButton *refreshButton = [[NSButton alloc] init];
[refreshButton bind:@"enabled" toObject:topicsViewController withKeyPath:@"canRefresh" options:nil];
refreshButton.bezelStyle = NSThickSquareBezelStyle;
refreshButton.image = [NSImage imageNamed:NSImageNameRefreshTemplate];
refreshButton.target = topicsViewController;
Expand Down
1 change: 1 addition & 0 deletions RubyChinaReader/RCRAppDelegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@
- (IBAction)preferencesClicked:(id)sender;
- (IBAction)showMainWindow:(id)sender;
- (IBAction)closeWindow:(id)sender;
- (IBAction)newTopicClicked:(id)sender;

@end
4 changes: 4 additions & 0 deletions RubyChinaReader/RCRAppDelegate.m
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@ - (IBAction)closeWindow:(id)sender {
[[NSApp keyWindow] close];
}

- (IBAction)newTopicClicked:(id)sender {
[[RCRAppController sharedAppController] newTopic];
}

#pragma mark - Private Methods

- (void)mapObjects {
Expand Down
11 changes: 10 additions & 1 deletion RubyChinaReader/RCROptionsViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@
//

#import "RCROptionsViewController.h"
#import "RCRSettingsManager.h"

@interface RCROptionsViewController ()

@property NSInteger refreshInterval;
@end

@implementation RCROptionsViewController
Expand All @@ -32,4 +33,12 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
return self;
}

- (void)setRefreshInterval:(NSInteger)interval {
[RCRSettingsManager sharedRCRSettingsManager].refreshInterval = interval;
}

- (NSInteger)refreshInterval {
return [RCRSettingsManager sharedRCRSettingsManager].refreshInterval;
}

@end
31 changes: 24 additions & 7 deletions RubyChinaReader/RCROptionsViewController.xib
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
<data>
<int key="IBDocument.SystemTarget">1070</int>
<string key="IBDocument.SystemVersion">11D50</string>
<string key="IBDocument.InterfaceBuilderVersion">2177</string>
<string key="IBDocument.InterfaceBuilderVersion">2182</string>
<string key="IBDocument.AppKitVersion">1138.32</string>
<string key="IBDocument.HIToolboxVersion">568.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">2177</string>
<string key="NS.object.0">2182</string>
</object>
<array key="IBDocument.IntegratedClassDependencies">
<string>NSPopUpButton</string>
Expand Down Expand Up @@ -54,6 +54,7 @@
<string key="NSFrame">{{18, 66}, {100, 18}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="733068260"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="599009421">
Expand Down Expand Up @@ -88,7 +89,7 @@
<string key="NSFrame">{{17, 105}, {82, 17}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="733068260"/>
<reference key="NSNextKeyView" ref="291548441"/>
<string key="NSReuseIdentifierKey">_NS:1505</string>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="471902425">
Expand Down Expand Up @@ -124,11 +125,11 @@
<string key="NSFrame">{{101, 98}, {100, 26}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView"/>
<reference key="NSNextKeyView" ref="65673891"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="899222782">
<int key="NSCellFlags">-1539178944</int>
<int key="NSCellFlags">-2076049856</int>
<int key="NSCellFlags2">2048</int>
<reference key="NSSupport" ref="447048529"/>
<string key="NSCellIdentifier">_NS:9</string>
Expand Down Expand Up @@ -214,7 +215,7 @@
<string key="NSFrame">{{18, 26}, {126, 18}}</string>
<reference key="NSSuperview" ref="1005"/>
<reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="291548441"/>
<reference key="NSNextKeyView"/>
<string key="NSReuseIdentifierKey">_NS:9</string>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="376245684">
Expand Down Expand Up @@ -271,6 +272,22 @@
</object>
<int key="connectionID">19</int>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">selectedTag: refreshInterval</string>
<reference key="source" ref="291548441"/>
<reference key="destination" ref="1001"/>
<object class="NSNibBindingConnector" key="connector">
<reference key="NSSource" ref="291548441"/>
<reference key="NSDestination" ref="1001"/>
<string key="NSLabel">selectedTag: refreshInterval</string>
<string key="NSBinding">selectedTag</string>
<string key="NSKeyPath">refreshInterval</string>
<int key="NSNibBindingConnectorVersion">2</int>
</object>
</object>
<int key="connectionID">93</int>
</object>
</array>
<object class="IBMutableOrderedSet" key="objectRecords">
<array key="orderedObjects">
Expand Down Expand Up @@ -647,7 +664,7 @@
<nil key="activeLocalization"/>
<dictionary class="NSMutableDictionary" key="localizations"/>
<nil key="sourceID"/>
<int key="maxID">84</int>
<int key="maxID">93</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<array class="NSMutableArray" key="referencedPartialClassDescriptions">
Expand Down
4 changes: 0 additions & 4 deletions RubyChinaReader/RCRPrefsController.m
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ @interface RCRPrefsController () {

@implementation RCRPrefsController

+ (NSString *)nibName {
return @"RCROptionsViewController";
}

- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
Expand Down
2 changes: 2 additions & 0 deletions RubyChinaReader/RCRSettingsManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,7 @@
@property (weak) NSString *privateToken;
@property BOOL startAtLogin;
@property NSInteger refreshInterval;
@property (readonly) NSInteger minRefreshInterval;
@property NSTimeInterval lastTimeRefreshed;

@end
33 changes: 30 additions & 3 deletions RubyChinaReader/RCRSettingsManager.m
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,16 @@

@implementation RCRSettingsManager

NSString *const KeychainService = @"RubyChina";
NSString *const KeychainUsername = @"PrivateToken";
NSString *const KeychainService = @"RubyChina";
NSString *const KeychainUsername = @"PrivateToken";
NSString *const LastTimeRefreshed = @"LastTimeRefreshed";
NSString *const RefreshInterval = @"RefreshInterval";
const NSInteger MinRefreshInterval = 60 * 3;
const NSInteger DefaultRefreshInterval = 3600;

SYNTHESIZE_SINGLETON_FOR_CLASS(RCRSettingsManager);

@synthesize startAtLogin, refreshInterval;
@synthesize startAtLogin;

- (void)setPrivateToken:(NSString *)privateToken {
if (privateToken && privateToken.length > 0) {
Expand All @@ -42,4 +46,27 @@ - (NSString *)privateToken {
return @"";
}

- (NSInteger)minRefreshInterval {
return MinRefreshInterval;
}

- (NSTimeInterval)lastTimeRefreshed {
return [[NSUserDefaults standardUserDefaults] doubleForKey:LastTimeRefreshed];
}

- (void)setLastTimeRefreshed:(NSTimeInterval)lastTime {
[[NSUserDefaults standardUserDefaults] setDouble:lastTime forKey:LastTimeRefreshed];
[[NSUserDefaults standardUserDefaults] synchronize];
}

- (NSInteger)refreshInterval {
NSInteger interval = [[NSUserDefaults standardUserDefaults] integerForKey:RefreshInterval];
return interval > 0 ? interval : DefaultRefreshInterval;
}

- (void)setRefreshInterval:(NSInteger)interval {
[[NSUserDefaults standardUserDefaults] setInteger:interval forKey:RefreshInterval];
[[NSUserDefaults standardUserDefaults] synchronize];
}

@end
2 changes: 2 additions & 0 deletions RubyChinaReader/RCRTopicsViewController.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,6 @@
- (IBAction)newTopic:(id)sender;
- (IBAction)userImageClicked:(id)sender;

@property BOOL canRefresh;

@end
Loading

0 comments on commit 54373fa

Please sign in to comment.