Browse Source

New changes for About Us View.

v1.2.4
Abhishek Banthia 8 years ago
parent
commit
804607fef3
  1. 6
      Clocker.xcodeproj/project.pbxproj
  2. BIN
      Clocker.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate
  3. 55
      Clocker/AboutUsWindow/CLAboutUsViewController.m
  4. 193
      Clocker/AboutUsWindow/en.lproj/CLAboutUsView.xib
  5. 15
      Clocker/Utilities/CLUnderlinedButton.h
  6. 28
      Clocker/Utilities/CLUnderlinedButton.m

6
Clocker.xcodeproj/project.pbxproj

@ -47,6 +47,7 @@
9A5B6C7C1D470ECB000EAAF1 /* CLTableViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A5B6C7B1D470ECB000EAAF1 /* CLTableViewDataSource.m */; };
9A5E6BAB1CAF8DFA006E7C5C /* iRate.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9A5E6BAA1CAF8DFA006E7C5C /* iRate.bundle */; };
9A63620A1C432F68004AD010 /* CLAPIConnector.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6362091C432F68004AD010 /* CLAPIConnector.m */; };
9A6AAD3F1E2A8268003C826E /* CLUnderlinedButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A6AAD3E1E2A8268003C826E /* CLUnderlinedButton.m */; };
9A6D93371CF3E82F005A8690 /* CoreImage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6D93361CF3E82F005A8690 /* CoreImage.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
9A79E9901CB34B6800BA7916 /* CLParentPanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A79E98F1CB34B6800BA7916 /* CLParentPanelController.m */; };
9A8605AE1BEC148400A810A4 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A8605AD1BEC148400A810A4 /* main.m */; };
@ -256,6 +257,8 @@
9A5E6BAA1CAF8DFA006E7C5C /* iRate.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = iRate.bundle; sourceTree = "<group>"; };
9A6362081C432F68004AD010 /* CLAPIConnector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLAPIConnector.h; path = Clocker/API/CLAPIConnector.h; sourceTree = "<group>"; };
9A6362091C432F68004AD010 /* CLAPIConnector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLAPIConnector.m; path = Clocker/API/CLAPIConnector.m; sourceTree = "<group>"; };
9A6AAD3D1E2A8268003C826E /* CLUnderlinedButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLUnderlinedButton.h; path = Clocker/Utilities/CLUnderlinedButton.h; sourceTree = "<group>"; };
9A6AAD3E1E2A8268003C826E /* CLUnderlinedButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLUnderlinedButton.m; path = Clocker/Utilities/CLUnderlinedButton.m; sourceTree = "<group>"; };
9A6D93361CF3E82F005A8690 /* CoreImage.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreImage.framework; path = System/Library/Frameworks/CoreImage.framework; sourceTree = SDKROOT; };
9A79E98E1CB34B6800BA7916 /* CLParentPanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CLParentPanelController.h; path = Clocker/CLParentPanelController.h; sourceTree = "<group>"; };
9A79E98F1CB34B6800BA7916 /* CLParentPanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CLParentPanelController.m; path = Clocker/CLParentPanelController.m; sourceTree = "<group>"; };
@ -475,6 +478,8 @@
9ABA2B021C671D49009DC0EF /* CLMainWindowController.m */,
9A79E98E1CB34B6800BA7916 /* CLParentPanelController.h */,
9A79E98F1CB34B6800BA7916 /* CLParentPanelController.m */,
9A6AAD3D1E2A8268003C826E /* CLUnderlinedButton.h */,
9A6AAD3E1E2A8268003C826E /* CLUnderlinedButton.m */,
);
name = Superclass;
sourceTree = "<group>";
@ -860,6 +865,7 @@
9A392EED1C1CE9950072C10A /* CLPreferencesViewController.m in Sources */,
9A5951BD1C1D0A8D009C17AA /* CommonStrings.m in Sources */,
9A5951FA1C1D5214009C17AA /* iVersion.m in Sources */,
9A6AAD3F1E2A8268003C826E /* CLUnderlinedButton.m in Sources */,
9A87DAC61C358FA800A8CF3B /* DTError.m in Sources */,
9A20A0781C4EA53600FB45AB /* CLOnboardingWindowController.m in Sources */,
9A5B6C7C1D470ECB000EAAF1 /* CLTableViewDataSource.m in Sources */,

BIN
Clocker.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate generated

Binary file not shown.

55
Clocker/AboutUsWindow/CLAboutUsViewController.m

@ -9,11 +9,18 @@
#import "CLAboutUsViewController.h"
#import "CommonStrings.h"
#import "CLAppFeedbackWindowController.h"
#import "CLUnderlinedButton.h"
@interface CLAboutUsViewController ()
@property (strong, nonatomic) CLAppFeedbackWindowController *feedbackWindow;
@property (weak) IBOutlet NSTextField *versionField;
@property (weak) IBOutlet CLUnderlinedButton *makerButton;
@property (weak) IBOutlet CLUnderlinedButton *quickCommentAction;
@property (weak) IBOutlet CLUnderlinedButton *privateFeedback;
@property (weak) IBOutlet CLUnderlinedButton *supportClocker;
@property (weak) IBOutlet CLUnderlinedButton *facebookButton;
@end
@ -22,17 +29,59 @@ NSString *const CLAboutUsNibIdentifier = @"CLAboutWindow";
NSString *const CLGitHubURL = @"https://github.com/Abhishaker17/Clocker";
NSString *const CLIssueURL =@"https://github.com/Abhishaker17/Clocker/issues";
NSString *const CLFacebookPageURL = @"https://www.facebook.com/ClockerMenubarClock/";
NSString *const CLTwitterLink = @"https://twitter.com/abgbm";
NSString *const CLPersonalWebsite = @"http://abhishekbanthia.com";
@implementation CLAboutUsViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.versionField.stringValue = NSLocalizedFormatString(@"ClockerVersion", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]);
[self underlineTextForActionButton];
self.versionField.stringValue = [NSString stringWithFormat:@"Clocker %@", [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"]];
// Do view setup here.
}
- (void)underlineTextForActionButton
{
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithAttributedString:self.makerButton.attributedTitle];
[str addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(3, str.length-3)];
[self.makerButton setAttributedTitle:str];
NSMutableAttributedString *quickComment = [[NSMutableAttributedString alloc] initWithAttributedString:self.quickCommentAction.attributedTitle];
[quickComment addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(3, 6)];
[self.quickCommentAction setAttributedTitle:quickComment];
NSMutableAttributedString *privateFeed = [[NSMutableAttributedString alloc] initWithAttributedString:self.privateFeedback.attributedTitle];
[privateFeed addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(7, privateFeed.length-7)];
[self.privateFeedback setAttributedTitle:privateFeed];
NSMutableAttributedString *supportClocker = [[NSMutableAttributedString alloc] initWithAttributedString:self.supportClocker.attributedTitle];
[supportClocker addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:NSMakeRange(27, 19)];
[self.supportClocker setAttributedTitle:supportClocker];
[self.quickCommentAction setCursor:[NSCursor pointingHandCursor]];
[self.supportClocker setCursor:[NSCursor pointingHandCursor]];
[self.privateFeedback setCursor:[NSCursor pointingHandCursor]];
[self.makerButton setCursor:[NSCursor pointingHandCursor]];
[self.facebookButton setCursor:[NSCursor pointingHandCursor]];
}
- (IBAction)openMyTwitter:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLTwitterLink]];
}
- (IBAction)viewSource:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLGitHubURL]];
@ -50,4 +99,8 @@ NSString *const CLFacebookPageURL = @"https://www.facebook.com/ClockerMenubarClo
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLFacebookPageURL]];
}
- (IBAction)openWebsite:(id)sender {
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLPersonalWebsite]];
}
@end

193
Clocker/AboutUsWindow/en.lproj/CLAboutUsView.xib

@ -8,162 +8,157 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CLAboutUsViewController">
<connections>
<outlet property="versionField" destination="FG9-E5-o8y" id="nBg-l0-ELU"/>
<outlet property="facebookButton" destination="P3u-Um-Nby" id="1FD-e6-gKd"/>
<outlet property="makerButton" destination="VA7-HL-mJp" id="Rpf-Aw-SNN"/>
<outlet property="privateFeedback" destination="bqr-yN-kPU" id="zNA-FO-nGY"/>
<outlet property="quickCommentAction" destination="Qws-7o-2om" id="7Da-u7-gSk"/>
<outlet property="supportClocker" destination="UMN-Wx-ukl" id="wUx-g4-Jyz"/>
<outlet property="versionField" destination="XlC-Xd-67t" id="ZW4-pw-I93"/>
<outlet property="view" destination="FS5-f2-b1Z" id="qSe-zw-rRT"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<view id="FS5-f2-b1Z">
<rect key="frame" x="0.0" y="0.0" width="487" height="222"/>
<rect key="frame" x="0.0" y="0.0" width="585" height="555"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p2G-hA-MSX">
<rect key="frame" x="20" y="73" width="125" height="117"/>
<constraints>
<constraint firstAttribute="width" constant="125" id="6Kp-RK-dT4"/>
<constraint firstAttribute="height" constant="117" id="znw-VN-bXv"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-512" id="pfa-88-uAu"/>
</imageView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="XlC-Xd-67t">
<rect key="frame" x="153" y="162" width="316" height="43"/>
<rect key="frame" x="18" y="492" width="549" height="43"/>
<constraints>
<constraint firstAttribute="height" constant="43" id="dqF-vG-wml"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Clocker" id="KPE-f2-s6r">
<font key="font" size="29" name="HelveticaNeue-Light"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" placeholderString="Title String" id="KPE-f2-s6r">
<font key="font" size="29" name="HelveticaNeue-Thin"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FG9-E5-o8y">
<rect key="frame" x="153" y="138" width="316" height="23"/>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P3u-Um-Nby" customClass="CLUnderlinedButton">
<rect key="frame" x="237" y="80" width="111" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="23" id="APM-BF-sIg"/>
<constraint firstAttribute="width" constant="111" id="5Yt-bH-NGf"/>
<constraint firstAttribute="height" constant="21" id="8Jh-fm-8up"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" placeholderString="Version String" id="ctT-VL-V5M">
<font key="font" size="16" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5Eo-aJ-L8H">
<rect key="frame" x="153" y="112" width="316" height="24"/>
<buttonCell key="cell" type="bevel" bezelStyle="rounded" image="FindUsOnFacebook" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="KI2-hO-Wif">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="openFacebookPage:" target="-2" id="gnQ-cM-gbO"/>
</connections>
</button>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="p2G-hA-MSX">
<rect key="frame" x="230" y="363" width="125" height="117"/>
<constraints>
<constraint firstAttribute="width" constant="125" id="6Kp-RK-dT4"/>
<constraint firstAttribute="height" constant="117" id="znw-VN-bXv"/>
</constraints>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ClockerIcon-512" id="pfa-88-uAu"/>
</imageView>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7VF-oD-eXA">
<rect key="frame" x="31" y="321" width="524" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="24" id="6fy-MI-uin"/>
<constraint firstAttribute="height" constant="22" id="Mmv-dl-OFq"/>
<constraint firstAttribute="width" constant="520" id="YaO-hR-Rbl"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Copyright (2016) Abhishek Banthia" id="4PX-se-5ds">
<font key="font" size="14" name="HelveticaNeue-Thin"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Clocker is completely open-source and is available for reuse under the MIT License" id="sMQ-wY-lxQ">
<font key="font" size="14" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6Cx-BF-XMU">
<rect key="frame" x="153" y="87" width="316" height="15"/>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="a6n-UL-Zeg">
<rect key="frame" x="77" y="207" width="432" height="47"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="Oob-bz-4Vp"/>
<constraint firstAttribute="height" constant="47" id="Uja-Q8-6Dg"/>
<constraint firstAttribute="width" constant="428" id="uSg-3e-YuD"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Clocker is completely open-source and is available for reuse" id="oId-kW-4fE">
<font key="font" size="10" name="HelveticaNeue-Light"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="I built Clocker with no employees, no funding while studying Computer Science. Feedback is welcome:" id="aJa-sU-W5K">
<font key="font" size="14" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fgO-N3-3oh">
<rect key="frame" x="124" y="13" width="130" height="32"/>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="UMN-Wx-ukl" customClass="CLUnderlinedButton">
<rect key="frame" x="79" y="269" width="428" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="HOR-7s-O7V"/>
<constraint firstAttribute="width" constant="118" id="fjr-FG-Jlq"/>
<constraint firstAttribute="width" constant="428" id="NjU-TB-ANz"/>
<constraint firstAttribute="height" constant="32" id="mu4-sB-ptQ"/>
</constraints>
<buttonCell key="cell" type="push" title="Support Clocker" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="yEt-bN-Jci">
<buttonCell key="cell" type="bevel" title="You can support Clocker by starring the source on GitHub! :)" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="0Yv-gv-ofG">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Light"/>
<font key="font" size="14" name="HelveticaNeue-Bold"/>
</buttonCell>
<connections>
<action selector="viewSource:" target="-2" id="gkr-T0-0OI"/>
<action selector="viewSource:" target="-2" id="rTX-2p-IOw"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="q67-QZ-7g3">
<rect key="frame" x="250" y="13" width="107" height="32"/>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Qws-7o-2om" customClass="CLUnderlinedButton">
<rect key="frame" x="157" y="155" width="300" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="Fw5-r2-JCs"/>
<constraint firstAttribute="width" constant="95" id="zmg-WE-hsM"/>
<constraint firstAttribute="width" constant="300" id="JDM-Vp-jtp"/>
<constraint firstAttribute="height" constant="32" id="ONC-Ru-rXu"/>
</constraints>
<buttonCell key="cell" type="push" title="Report Issue" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="HO1-pf-GNd">
<buttonCell key="cell" type="bevel" title="1. @abgbm on Twitter for quick comments" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="7Om-Gj-t59">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="HelveticaNeue-Light"/>
<font key="font" size="15" name="HelveticaNeue-Light"/>
</buttonCell>
<connections>
<action selector="reportIssue:" target="-2" id="71W-Nb-pYu"/>
<action selector="openMyTwitter:" target="-2" id="WkI-eA-Dli"/>
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="P3u-Um-Nby">
<rect key="frame" x="353" y="13" width="123" height="32"/>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bqr-yN-kPU" customClass="CLUnderlinedButton">
<rect key="frame" x="195" y="123" width="223" height="32"/>
<constraints>
<constraint firstAttribute="width" constant="111" id="5Yt-bH-NGf"/>
<constraint firstAttribute="height" constant="21" id="8Jh-fm-8up"/>
<constraint firstAttribute="width" constant="223" id="KgH-GG-Q9f"/>
<constraint firstAttribute="height" constant="32" id="qOd-mQ-Baj"/>
</constraints>
<buttonCell key="cell" type="push" bezelStyle="rounded" image="FindUsOnFacebook" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="KI2-hO-Wif">
<buttonCell key="cell" type="bevel" title="2. For Private Feedback" bezelStyle="rounded" alignment="left" imageScaling="proportionallyDown" inset="2" id="Ldl-QZ-Pz6">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<font key="font" size="15" name="HelveticaNeue-Light"/>
</buttonCell>
<connections>
<action selector="openFacebookPage:" target="-2" id="gnQ-cM-gbO"/>
<action selector="reportIssue:" target="-2" id="ngj-D4-izO"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IhK-El-tOe">
<rect key="frame" x="153" y="53" width="316" height="15"/>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VA7-HL-mJp" customClass="CLUnderlinedButton">
<rect key="frame" x="195" y="20" width="196" height="32"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="7kh-Ha-LHP"/>
<constraint firstAttribute="width" constant="196" id="E0C-xE-HZz"/>
<constraint firstAttribute="height" constant="32" id="kie-IA-s8j"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="You can support Clocker by starring the source on GitHub! :)" id="apa-Nu-NtC">
<font key="font" size="10" name="HelveticaNeue-Bold"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Rzs-xE-sfs">
<rect key="frame" x="153" y="70" width="316" height="15"/>
<constraints>
<constraint firstAttribute="height" constant="15" id="2sg-Q1-h9h"/>
</constraints>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="under the MIT license." id="JAy-Yp-MXm">
<font key="font" size="10" name="HelveticaNeue-Light"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<buttonCell key="cell" type="bevel" title="By Abhishek Banthia" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="F5n-7Y-7ST">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" size="13" name="Menlo-Regular"/>
</buttonCell>
<connections>
<action selector="openWebsite:" target="-2" id="sAx-tW-Cql"/>
</connections>
</button>
</subviews>
<constraints>
<constraint firstItem="p2G-hA-MSX" firstAttribute="leading" secondItem="FS5-f2-b1Z" secondAttribute="leading" constant="20" id="8LW-4H-HKD"/>
<constraint firstAttribute="bottom" secondItem="q67-QZ-7g3" secondAttribute="bottom" constant="20" id="Cl5-lU-Hlw"/>
<constraint firstItem="IhK-El-tOe" firstAttribute="top" secondItem="Rzs-xE-sfs" secondAttribute="bottom" constant="2" id="GhF-Ml-o0d"/>
<constraint firstAttribute="bottom" secondItem="fgO-N3-3oh" secondAttribute="bottom" constant="20" id="Ka3-lR-aW1"/>
<constraint firstItem="Rzs-xE-sfs" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="Mru-Qk-R35"/>
<constraint firstItem="P3u-Um-Nby" firstAttribute="leading" secondItem="q67-QZ-7g3" secondAttribute="trailing" constant="8" id="NtI-jY-BNB"/>
<constraint firstAttribute="trailing" secondItem="6Cx-BF-XMU" secondAttribute="trailing" constant="20" id="PCL-2W-fCV"/>
<constraint firstItem="6Cx-BF-XMU" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="PxC-Pa-PfL"/>
<constraint firstItem="XlC-Xd-67t" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="ReB-0P-Ppj"/>
<constraint firstItem="p2G-hA-MSX" firstAttribute="top" secondItem="XlC-Xd-67t" secondAttribute="bottom" constant="-28" id="W2D-5B-xri"/>
<constraint firstItem="IhK-El-tOe" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="YNf-3g-MSO"/>
<constraint firstItem="5Eo-aJ-L8H" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="a9Y-c0-NKB"/>
<constraint firstAttribute="bottom" secondItem="P3u-Um-Nby" secondAttribute="bottom" constant="20" id="csw-Zl-TRQ"/>
<constraint firstAttribute="trailing" secondItem="IhK-El-tOe" secondAttribute="trailing" constant="20" id="cxj-b7-7xn"/>
<constraint firstItem="q67-QZ-7g3" firstAttribute="leading" secondItem="fgO-N3-3oh" secondAttribute="trailing" constant="8" id="fA5-O5-kY8"/>
<constraint firstAttribute="trailing" secondItem="5Eo-aJ-L8H" secondAttribute="trailing" constant="20" id="has-V9-fM5"/>
<constraint firstAttribute="trailing" secondItem="FG9-E5-o8y" secondAttribute="trailing" constant="20" id="j5d-17-Loc"/>
<constraint firstItem="FG9-E5-o8y" firstAttribute="leading" secondItem="p2G-hA-MSX" secondAttribute="trailing" constant="10" id="kyh-fi-23P"/>
<constraint firstItem="5Eo-aJ-L8H" firstAttribute="top" secondItem="FG9-E5-o8y" secondAttribute="bottom" constant="2" id="pVM-TS-Wvl"/>
<constraint firstItem="p2G-hA-MSX" firstAttribute="centerY" secondItem="FS5-f2-b1Z" secondAttribute="centerY" constant="-20" id="ptH-jk-gxt"/>
<constraint firstItem="P3u-Um-Nby" firstAttribute="top" secondItem="bqr-yN-kPU" secondAttribute="bottom" constant="22" id="4hO-FZ-moc"/>
<constraint firstItem="XlC-Xd-67t" firstAttribute="top" secondItem="FS5-f2-b1Z" secondAttribute="top" constant="20" id="5pp-3y-HTt"/>
<constraint firstAttribute="bottom" secondItem="VA7-HL-mJp" secondAttribute="bottom" constant="20" id="CVb-Sr-Nw1"/>
<constraint firstItem="7VF-oD-eXA" firstAttribute="top" secondItem="p2G-hA-MSX" secondAttribute="bottom" constant="20" id="G3Y-5F-KUP"/>
<constraint firstItem="7VF-oD-eXA" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" id="JBW-tE-GYX"/>
<constraint firstItem="XlC-Xd-67t" firstAttribute="leading" secondItem="FS5-f2-b1Z" secondAttribute="leading" constant="20" id="Rzt-60-XGW"/>
<constraint firstItem="P3u-Um-Nby" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" id="SZt-zU-0x0"/>
<constraint firstItem="VA7-HL-mJp" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" id="VgM-TG-RMH"/>
<constraint firstItem="a6n-UL-Zeg" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" id="a4A-xB-QPy"/>
<constraint firstItem="bqr-yN-kPU" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" constant="14" id="fZW-Qc-XW7"/>
<constraint firstItem="bqr-yN-kPU" firstAttribute="top" secondItem="Qws-7o-2om" secondAttribute="bottom" id="fqs-sy-IHv"/>
<constraint firstItem="UMN-Wx-ukl" firstAttribute="top" secondItem="7VF-oD-eXA" secondAttribute="bottom" constant="20" id="gdN-Rl-UiN"/>
<constraint firstItem="Qws-7o-2om" firstAttribute="top" secondItem="a6n-UL-Zeg" secondAttribute="bottom" constant="20" id="gup-Hv-WeJ"/>
<constraint firstItem="a6n-UL-Zeg" firstAttribute="top" secondItem="UMN-Wx-ukl" secondAttribute="bottom" constant="15" id="hAl-AD-iaJ"/>
<constraint firstItem="p2G-hA-MSX" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" id="iiK-YM-LSX"/>
<constraint firstItem="UMN-Wx-ukl" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" id="mM0-h8-IJQ"/>
<constraint firstItem="p2G-hA-MSX" firstAttribute="top" secondItem="XlC-Xd-67t" secondAttribute="bottom" constant="12" id="pYc-F2-F5r"/>
<constraint firstAttribute="trailing" secondItem="XlC-Xd-67t" secondAttribute="trailing" constant="20" id="vpM-Kh-fhm"/>
<constraint firstItem="fgO-N3-3oh" firstAttribute="leading" secondItem="FS5-f2-b1Z" secondAttribute="leading" constant="130" id="wOA-HL-UjC"/>
<constraint firstItem="FG9-E5-o8y" firstAttribute="top" secondItem="XlC-Xd-67t" secondAttribute="bottom" constant="1" id="yHu-dm-LPw"/>
<constraint firstItem="Rzs-xE-sfs" firstAttribute="top" secondItem="6Cx-BF-XMU" secondAttribute="bottom" constant="2" id="ydK-a7-uQy"/>
<constraint firstAttribute="trailing" secondItem="Rzs-xE-sfs" secondAttribute="trailing" constant="20" id="zhC-Yf-lRU"/>
<constraint firstItem="6Cx-BF-XMU" firstAttribute="top" secondItem="5Eo-aJ-L8H" secondAttribute="bottom" constant="10" id="zki-ag-D4H"/>
<constraint firstItem="Qws-7o-2om" firstAttribute="centerX" secondItem="FS5-f2-b1Z" secondAttribute="centerX" constant="14.5" id="zEu-sq-MyI"/>
</constraints>
<point key="canvasLocation" x="601.5" y="244"/>
<point key="canvasLocation" x="601.5" y="243.5"/>
</view>
</objects>
<resources>

15
Clocker/Utilities/CLUnderlinedButton.h

@ -0,0 +1,15 @@
//
// CLUnderlinedButton.h
// Clocker
//
// Created by Abhishek Banthia on 1/14/17.
//
//
#import <Cocoa/Cocoa.h>
@interface CLUnderlinedButton : NSButton
@property (strong) NSCursor *cursor;
@end

28
Clocker/Utilities/CLUnderlinedButton.m

@ -0,0 +1,28 @@
//
// CLUnderlinedButton.m
// Clocker
//
// Created by Abhishek Banthia on 1/14/17.
//
//
#import "CLUnderlinedButton.h"
@implementation CLUnderlinedButton
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
}
-(void)resetCursorRects
{
if (self.cursor) {
[self addCursorRect:[self bounds] cursor: self.cursor];
} else {
[super resetCursorRects];
}
}
@end
Loading…
Cancel
Save