Browse Source

Common Strings

v1.2.1
Abhishek Banthia 9 years ago
parent
commit
10e0c6cd49
  1. 12
      Clocker.xcodeproj/project.pbxproj
  2. BIN
      Clocker.xcodeproj/project.xcworkspace/xcuserdata/abhishekbanthia.xcuserdatad/UserInterfaceState.xcuserstate
  3. 3
      Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/Clocker.xcscheme
  4. 12
      Clocker/AboutUsWindow/CLAboutWindowController.m
  5. 7
      Clocker/ApplicationDelegate.m
  6. 29
      Clocker/Base.lproj/PreferencesWindow.xib
  7. 16
      Clocker/CLRatingCellView.m
  8. 18
      Clocker/CommonStrings.h
  9. 19
      Clocker/CommonStrings.m
  10. 46
      Clocker/PanelController.m
  11. 82
      Clocker/PreferencesWindowController.m
  12. 3
      Clocker/Rate App/iRate.m
  13. 10
      Clocker/de.lproj/Localizable.strings
  14. 29
      Clocker/de.lproj/PreferencesWindow.xib
  15. 9
      Clocker/en.lproj/Localizable.strings
  16. 6
      Clocker/en.lproj/Panel.xib
  17. 29
      Clocker/en.lproj/PreferencesWindow.xib
  18. 8
      Clocker/fr.lproj/Localizable.strings
  19. 2
      Clocker/fr.lproj/Panel.xib
  20. 29
      Clocker/fr.lproj/PreferencesWindow.xib
  21. 9
      Clocker/ja.lproj/Localizable.strings
  22. 29
      Clocker/ja.lproj/PreferencesWindow.xib

12
Clocker.xcodeproj/project.pbxproj

@ -44,6 +44,7 @@
9AD2327B1C1B995900D1D446 /* Vector.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 9AD2327A1C1B995900D1D446 /* Vector.jpg */; };
9AD2327D1C1B9A9000D1D446 /* aboutTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = 9AD2327C1C1B9A9000D1D446 /* aboutTemplate.png */; };
9AD2327F1C1BA04800D1D446 /* FB-FindUsonFacebook-online-144.png in Resources */ = {isa = PBXBuildFile; fileRef = 9AD2327E1C1BA04800D1D446 /* FB-FindUsonFacebook-online-144.png */; };
9AD232821C1BDA3A00D1D446 /* CommonStrings.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AD232811C1BDA3A00D1D446 /* CommonStrings.m */; };
DD4F7C0913C30F9F00825C6E /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD4F7C0813C30F9F00825C6E /* Cocoa.framework */; };
/* End PBXBuildFile section */
@ -114,6 +115,8 @@
9AD2327A1C1B995900D1D446 /* Vector.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = Vector.jpg; path = ../Vector.jpg; sourceTree = "<group>"; };
9AD2327C1C1B9A9000D1D446 /* aboutTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = aboutTemplate.png; path = ../../../Downloads/aboutTemplate.png; sourceTree = "<group>"; };
9AD2327E1C1BA04800D1D446 /* FB-FindUsonFacebook-online-144.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "FB-FindUsonFacebook-online-144.png"; path = "../../../Downloads/logos-and-badges_find-us_online/png/FB-FindUsonFacebook-online-144.png"; sourceTree = "<group>"; };
9AD232801C1BDA3A00D1D446 /* CommonStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CommonStrings.h; path = Clocker/CommonStrings.h; sourceTree = "<group>"; };
9AD232811C1BDA3A00D1D446 /* CommonStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CommonStrings.m; path = Clocker/CommonStrings.m; sourceTree = "<group>"; };
DD4F7C0413C30F9F00825C6E /* Clocker.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Clocker.app; sourceTree = BUILT_PRODUCTS_DIR; };
DD4F7C0813C30F9F00825C6E /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
DD4F7C0B13C30F9F00825C6E /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
@ -144,6 +147,8 @@
isa = PBXGroup;
children = (
9A2000CF1BFBD472002BFDE8 /* Localizable.strings */,
9AD232801C1BDA3A00D1D446 /* CommonStrings.h */,
9AD232811C1BDA3A00D1D446 /* CommonStrings.m */,
);
name = "Localization Strings";
sourceTree = "<group>";
@ -165,8 +170,6 @@
9A8605DD1BEC15C400A810A4 /* MainMenu.xib */,
9ABA38AE1BFAD7F80073EA4D /* Panel.xib */,
9ABA38B11BFAD83F0073EA4D /* PreferencesWindow.xib */,
9AD232751C1B985700D1D446 /* CLAboutWindowController.h */,
9AD232761C1B985700D1D446 /* CLAboutWindowController.m */,
9AD232771C1B985700D1D446 /* CLAboutWindow.xib */,
);
name = XIB;
@ -226,6 +229,8 @@
9A8605E51BEC165400A810A4 /* Controllers */ = {
isa = PBXGroup;
children = (
9AD232751C1B985700D1D446 /* CLAboutWindowController.h */,
9AD232761C1B985700D1D446 /* CLAboutWindowController.m */,
9A8605CA1BEC155B00A810A4 /* ApplicationDelegate.h */,
9A8605B51BEC14BE00A810A4 /* ApplicationDelegate.m */,
9A8605C91BEC155B00A810A4 /* MenubarController.h */,
@ -241,7 +246,6 @@
DD4F7BF913C30F9F00825C6E = {
isa = PBXGroup;
children = (
9A25F7481C1A5E21007D369B /* Rate */,
9A5B1A8D1BECDFB700A77C68 /* Clocker.entitlements */,
9A43792D1BEC256200F4E27F /* Media.xcassets */,
9A2000C61BFBCEF6002BFDE8 /* Localization Strings */,
@ -253,6 +257,7 @@
9A8605E21BEC161300A810A4 /* Superclass */,
DD4F7C0713C30F9F00825C6E /* Frameworks */,
DD4F7C0513C30F9F00825C6E /* Products */,
9A25F7481C1A5E21007D369B /* Rate */,
);
sourceTree = "<group>";
};
@ -394,6 +399,7 @@
9A8605BF1BEC14F600A810A4 /* BackgroundView.m in Sources */,
9AB9357B1C1AD8F7001285A0 /* CLRatingCellView.m in Sources */,
9A25F7471C1A5E17007D369B /* iRate.m in Sources */,
9AD232821C1BDA3A00D1D446 /* CommonStrings.m in Sources */,
9A8605C01BEC14F600A810A4 /* Panel.m in Sources */,
9A8605C11BEC14F600A810A4 /* PreferencesWindowController.m in Sources */,
9A8605BA1BEC14DC00A810A4 /* StatusItemView.m in Sources */,

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

Binary file not shown.

3
Clocker.xcodeproj/xcuserdata/abhishekbanthia.xcuserdatad/xcschemes/Clocker.xcscheme

@ -52,7 +52,8 @@
debugServiceExtension = "internal"
allowLocationSimulation = "YES"
showNonLocalizedStrings = "YES"
language = "en">
language = "fr"
region = "FR">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference

12
Clocker/AboutUsWindow/CLAboutWindowController.m

@ -13,6 +13,10 @@
@end
static CLAboutWindowController *sharedAboutUs = nil;
NSString *const CLAboutUsWindowNibIdentifier = @"CLAboutWindow";
NSString *const CLSourceCodeURL = @"https://github.com/Abhishaker17/Clocker";
NSString *const CLIssueReportingURL =@"https://github.com/Abhishaker17/Clocker/issues";
NSString *const CLFacebookURL = @"https://www.facebook.com/ClockerMenubarClock/";
@implementation CLAboutWindowController
@ -33,7 +37,7 @@ static CLAboutWindowController *sharedAboutUs = nil;
/*Using a thread safe pattern*/
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedAboutUs = [[self alloc] initWithWindowNibName:@"CLAboutWindow"];
sharedAboutUs = [[self alloc] initWithWindowNibName:CLAboutUsWindowNibIdentifier];
});
@ -43,17 +47,17 @@ static CLAboutWindowController *sharedAboutUs = nil;
}
- (IBAction)viewSource:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://github.com/Abhishaker17/Clocker"]];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLSourceCodeURL]];
}
- (IBAction)reportIssue:(id)sender
{
//
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://github.com/Abhishaker17/Clocker/issues"]];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLIssueReportingURL]];
}
- (IBAction)openFacebookPage:(id)sender
{
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"https://www.facebook.com/ClockerMenubarClock/"]];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:CLFacebookURL]];
}
@end

7
Clocker/ApplicationDelegate.m

@ -29,6 +29,7 @@
#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>
#import "iRate.h"
#import "CommonStrings.h"
@implementation ApplicationDelegate
@ -66,15 +67,15 @@ void *kContextActivePanel = &kContextActivePanel;
- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPreferences"];
NSArray *defaultPreference = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
if (defaultPreference.count == 0)
{
NSDictionary *defaultDictionary = @{@"timezoneName" : [NSTimeZone systemTimeZone].name, @"customLabel" : @""};
NSDictionary *defaultDictionary = @{CLTimezoneName : [NSTimeZone systemTimeZone].name, CLCustomLabel : CLEmptyString};
NSMutableArray *newDefaults = [[NSMutableArray alloc] initWithObjects:defaultDictionary, nil];
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:@"defaultPreferences"];
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:CLDefaultPreferenceKey];
}

29
Clocker/Base.lproj/PreferencesWindow.xib

@ -29,7 +29,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button toolTip="Add a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DCz-qN-ydK">
<rect key="frame" x="11" y="89" width="21" height="22"/>
<rect key="frame" x="11" y="67" width="21" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="aUK-f8-pvY"/>
<constraint firstAttribute="width" constant="21" id="hAr-3f-KNJ"/>
@ -43,7 +43,7 @@
</connections>
</button>
<button toolTip="Remove a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ixe-Sn-8qT">
<rect key="frame" x="32" y="89" width="21" height="22"/>
<rect key="frame" x="32" y="67" width="21" height="22"/>
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="SVO-Wt-Mfb">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@ -53,13 +53,13 @@
</connections>
</button>
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="22" horizontalPageScroll="10" verticalLineScroll="22" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cI0-M7-C9h">
<rect key="frame" x="10" y="116" width="419" height="249"/>
<rect key="frame" x="10" y="94" width="419" height="271"/>
<clipView key="contentView" id="WWk-6i-nI7">
<rect key="frame" x="0.0" y="0.0" width="419" height="249"/>
<rect key="frame" x="0.0" y="0.0" width="419" height="271"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnSelection="YES" autosaveColumns="NO" rowHeight="20" headerView="dKI-Ue-9QX" id="oKD-AN-gPT">
<rect key="frame" x="0.0" y="0.0" width="419" height="226"/>
<rect key="frame" x="0.0" y="0.0" width="419" height="248"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -113,17 +113,6 @@
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
<button toolTip="Show only the City instead of Continent/City format" translatesAutoresizingMaskIntoConstraints="NO" id="P0l-kc-VxU" customClass="ColoredButton">
<rect key="frame" x="9" y="40" width="191" height="18"/>
<buttonCell key="cell" type="check" title="Show only City/Region name" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="jaB-eA-S6N">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" size="12" name="Helvetica-Light"/>
</buttonCell>
<connections>
<action selector="showOnlyCityName:" target="-2" id="1lf-cZ-gyt"/>
<binding destination="sEG-Zb-KUM" name="value" keyPath="values.showOnlyCity" id="xqX-Jx-epo"/>
</connections>
</button>
<button toolTip="Clocker will start on each system launch" translatesAutoresizingMaskIntoConstraints="NO" id="GDz-2Z-uX5" customClass="ColoredButton">
<rect key="frame" x="9" y="18" width="191" height="18"/>
<buttonCell key="cell" type="check" title="Start Clocker on system startup" bezelStyle="regularSquare" imagePosition="left" inset="2" id="h45-jZ-cPY">
@ -135,7 +124,7 @@
</connections>
</button>
<button toolTip="Show time using a 24-hour format" translatesAutoresizingMaskIntoConstraints="NO" id="N47-gw-Pay" customClass="ColoredButton">
<rect key="frame" x="9" y="62" width="343" height="22"/>
<rect key="frame" x="9" y="40" width="343" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="339" id="0eX-T7-EbU"/>
<constraint firstAttribute="height" constant="18" id="qwS-Bk-vmy"/>
@ -153,15 +142,11 @@
<constraints>
<constraint firstAttribute="bottom" secondItem="GDz-2Z-uX5" secondAttribute="bottom" constant="20" id="5zZ-7S-DL7"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="top" secondItem="cI0-M7-C9h" secondAttribute="bottom" constant="6" id="6Ye-VD-kSE"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="DUR-uK-Ncx"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="FLl-Pc-Gzn"/>
<constraint firstItem="cI0-M7-C9h" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="10" id="Fy5-6V-gu1"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="P0l-kc-VxU" secondAttribute="bottom" constant="8" id="NW3-cd-t0e"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="leading" secondItem="DCz-qN-ydK" secondAttribute="trailing" id="TLA-Fw-F7P"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="Tfe-Y8-KcS"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="width" secondItem="P0l-kc-VxU" secondAttribute="width" id="VUD-7V-5SX"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="VaK-C6-zPA"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="Waz-CP-UWF"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="height" secondItem="P0l-kc-VxU" secondAttribute="height" id="c2z-Ik-d6W"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="top" secondItem="ixe-Sn-8qT" secondAttribute="bottom" constant="8" id="gbd-HA-u9p"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="hXb-69-tI0"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="width" secondItem="DCz-qN-ydK" secondAttribute="width" id="o7k-jf-cL0"/>

16
Clocker/CLRatingCellView.m

@ -23,8 +23,8 @@
{
NSButton *leftButton = (NSButton *)sender;
if ([leftButton.title isEqualToString:@"Not Really"]) {
[self setAnimatedStringValue:@"Mind giving us some feedback?" andTextField:self.leftField];
if ([leftButton.title isEqualToString:NSLocalizedString(@"Not Really", nil)]) {
[self setAnimatedStringValue:NSLocalizedString(@"AskForFeedbackMessage", nil) andTextField:self.leftField];
}
else
{
@ -41,8 +41,8 @@
{
NSButton *rightButton = (NSButton *)sender;
if ([rightButton.title isEqualToString:@"Yes!"]) {
[self setAnimatedStringValue:@"Rate us on the App Store, then?" andTextField:self.leftField];
if ([rightButton.title isEqualToString:NSLocalizedString(@"Yes!", nil)]) {
[self setAnimatedStringValue:NSLocalizedString(@"AskForRatingMessage", nil) andTextField:self.leftField];
}
else
{
@ -79,11 +79,11 @@
[textfield.animator setAlphaValue: 1.0];
[self.leftButton.animator setAlphaValue:1.0];
[self.rightButton.animator setAlphaValue:1.0];
if ([self.leftButton.title isEqualToString:@"Not Really"]) {
[self.leftButton.animator setTitle:@"No, thanks"];
if ([self.leftButton.title isEqualToString:NSLocalizedString(@"Not Really", nil)]) {
[self.leftButton.animator setTitle:NSLocalizedString(@"NoSelected", nil)];
}
if ([self.rightButton.title isEqualToString:@"Yes!"]) {
[self.rightButton.animator setTitle:@"Ok, sure"];
if ([self.rightButton.title isEqualToString:NSLocalizedString(@"Yes!", nil)]) {
[self.rightButton.animator setTitle:NSLocalizedString(@"YesSelected", nil)];
}
} completionHandler: ^{

18
Clocker/CommonStrings.h

@ -0,0 +1,18 @@
//
// CommonStrings.h
// Clocker
//
// Created by Abhishek Banthia on 12/11/15.
//
//
#import <Foundation/Foundation.h>
@interface CommonStrings : NSObject
extern NSString *const CLEmptyString;
extern NSString *const CLDefaultPreferenceKey;
extern NSString *const CLTimezoneName;
extern NSString *const CLCustomLabel;
extern NSString *const CLC24hourFormatSelectedKey;
@end

19
Clocker/CommonStrings.m

@ -0,0 +1,19 @@
//
// CommonStrings.m
// Clocker
//
// Created by Abhishek Banthia on 12/11/15.
//
//
#import "CommonStrings.h"
@implementation CommonStrings
NSString *const CLEmptyString = @"";
NSString *const CLDefaultPreferenceKey = @"defaultPreferences";
NSString *const CLTimezoneName = @"timezoneName";
NSString *const CLCustomLabel = @"customLabel";
NSString *const CLC24hourFormatSelectedKey = @"is24HourFormatSelected";
@end

46
Clocker/PanelController.m

@ -32,6 +32,7 @@
#import "MenubarController.h"
#import <Crashlytics/Crashlytics.h>
#import "CLRatingCellView.h"
#import "CommonStrings.h"
#define OPEN_DURATION .15
#define CLOSE_DURATION .1
@ -49,6 +50,10 @@
#import "PreferencesWindowController.h"
NSString *const CLPanelNibIdentifier = @"Panel";
NSString *const CLRatingCellViewIdentifier = @"ratingCellView";
NSString *const CLTimezoneCellViewIdentifier = @"timeZoneCell";
@implementation PanelController
@ -57,7 +62,7 @@
- (id)initWithDelegate:(id<PanelControllerDelegate>)delegate
{
self = [super initWithWindowNibName:@"Panel"];
self = [super initWithWindowNibName:CLPanelNibIdentifier];
if (self != nil)
{
_delegate = delegate;
@ -93,7 +98,7 @@
- (void) updateDefaultPreferences
{
NSArray *defaultZones = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPreferences"];
NSArray *defaultZones = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
self.defaultPreferences = self.defaultPreferences == nil ? [[NSMutableArray alloc] initWithArray:defaultZones] : [NSMutableArray arrayWithArray:defaultZones];
@ -259,12 +264,12 @@
-(NSView*)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
if (self.showReviewCell && row == self.defaultPreferences.count) {
CLRatingCellView *cellView = [self.mainTableview makeViewWithIdentifier:@"ratingCellView" owner:self];
CLRatingCellView *cellView = [self.mainTableview makeViewWithIdentifier:CLRatingCellViewIdentifier owner:self];
return cellView;
}
NSTableCellView *cell = [tableView makeViewWithIdentifier:@"timeZoneCell" owner:self];
NSTableCellView *cell = [tableView makeViewWithIdentifier:CLTimezoneCellViewIdentifier owner:self];
NSTextField *cellText = [cell viewWithTag:100];
@ -272,13 +277,13 @@
NSTextField *dateCell = [cell viewWithTag:102];
dateCell.stringValue = [self getDateForTimeZone:self.defaultPreferences[row][@"timezoneName"]];
dateCell.stringValue = [self getDateForTimeZone:self.defaultPreferences[row][CLTimezoneName]];
timeCell.stringValue = [self getTimeForTimeZone:self.defaultPreferences[row][@"timezoneName"]];
timeCell.stringValue = [self getTimeForTimeZone:self.defaultPreferences[row][CLTimezoneName]];
NSNumber *shouldShowOnlyCity = [[NSUserDefaults standardUserDefaults] objectForKey:@"showOnlyCity"];
cellText.stringValue = [self formatStringShouldContainCity:shouldShowOnlyCity.boolValue withTimezoneName:self.defaultPreferences[row]];
cellText.stringValue = [self formatStringShouldContainCity:YES
withTimezoneName:self.defaultPreferences[row]];
return cell;
}
@ -289,20 +294,26 @@
- (NSString *)formatStringShouldContainCity:(BOOL)value withTimezoneName:(NSDictionary *)timeZoneDictionary
{
if (timeZoneDictionary[@"customLabel"]) {
NSString *customLabel = timeZoneDictionary[@"customLabel"];
if (timeZoneDictionary[CLCustomLabel]) {
NSString *customLabel = timeZoneDictionary[CLCustomLabel];
if (customLabel.length > 0) {
return customLabel;
}
}
NSString *timezoneName = timeZoneDictionary[@"timezoneName"];
NSString *timezoneName = timeZoneDictionary[CLTimezoneName];
if (value) {
NSRange range = [timezoneName rangeOfString:@"/"];
if (range.location != NSNotFound) {
return [timezoneName substringFromIndex:range.location+1];
NSRange underscoreRange = [timezoneName rangeOfString:@"_"];
if (range.location != NSNotFound)
{
timezoneName = [timezoneName substringFromIndex:range.location+1];
}
if (underscoreRange.location != NSNotFound)
{
timezoneName = [timezoneName stringByReplacingOccurrencesOfString:@"_"
withString:@" "];
}
}
@ -315,7 +326,7 @@
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateStyle = kCFDateFormatterNoStyle;
NSNumber *is24HourFormatSelected = [[NSUserDefaults standardUserDefaults] objectForKey:@"is24HourFormatSelected"];
NSNumber *is24HourFormatSelected = [[NSUserDefaults standardUserDefaults] objectForKey:CLC24hourFormatSelectedKey];
is24HourFormatSelected.boolValue ? [dateFormatter setDateFormat:@"HH:mm"] : [dateFormatter setDateFormat:@"hh:mm a"];
@ -349,7 +360,6 @@
if (localDate == nil || timezoneDate == nil) {
[CrashlyticsKit setUserEmail:systemDate];
[CrashlyticsKit setUserIdentifier:date];
NSLog(@"One of the dates is nil");
return @"Today";
}
@ -430,8 +440,6 @@
[pboard setData:data forType:@"public.text"];
[self updateCellForOldSelection:rowIndexes.firstIndex andColor:[NSColor blackColor]];
NSLog(@"Write row with indexes");
return YES;
}
@ -446,7 +454,7 @@
[self.defaultPreferences exchangeObjectAtIndex:rowIndexes.firstIndex withObjectAtIndex:row];
[[NSUserDefaults standardUserDefaults] setObject:self.defaultPreferences forKey:@"defaultPreferences"];
[[NSUserDefaults standardUserDefaults] setObject:self.defaultPreferences forKey:CLDefaultPreferenceKey];
[self.mainTableview reloadData];

82
Clocker/PreferencesWindowController.m

@ -35,6 +35,15 @@
#import "PanelController.h"
#import "ApplicationDelegate.h"
#import <QuartzCore/QuartzCore.h>
#import "CommonStrings.h"
NSString *const CLPredicateKey = @"SELF CONTAINS[cd]%@";
NSString *const CLDragSessionKey = @"public.text";
NSString *const CLPreferencesNibIdentifier = @"PreferencesWindow";
NSString *const CLPreferencesTimezoneNameColumnIdentifier = @"timezoneName";
NSString *const CLPreferencesAbbreviationColumnIdentifier = @"abbreviation";
NSString *const CLPreferencesCustomLabelColumnIdentifier = @"label";
NSString *const CLPreferencesAvailableTimezoneColumnIdentifier = @"availableTimezones";
@interface PreferencesWindowController ()
@ -64,7 +73,7 @@ static PreferencesWindowController *sharedPreferences = nil;
self.window.titleVisibility = NSWindowTitleHidden;
NSMutableArray *defaultTimeZones = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPreferences"];
NSMutableArray *defaultTimeZones = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
if (!self.timeZoneArray || !self.selectedTimeZones)
{
@ -73,28 +82,18 @@ static PreferencesWindowController *sharedPreferences = nil;
self.filteredArray = [[NSArray alloc] init];
}
self.messageLabel.stringValue = @"";
self.messageLabel.stringValue = CLEmptyString;
[self.timezoneTableView reloadData];
[self.availableTimezoneTableView reloadData];
//Register for drag and drop
[self.timezoneTableView registerForDraggedTypes: [NSArray arrayWithObject: @"public.text"]];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
}
-(NSAttributedString *)stringFromHTML:(NSString *)html withFont:(NSFont *)font
{
html = [NSString stringWithFormat:@"<span style=\"font-family:'%@'; font-size:%dpx;\">%@</span>", [font fontName], (int)[font pointSize], html];
NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding];
NSAttributedString* string = [[NSAttributedString alloc] initWithHTML:data documentAttributes:nil];
return string;
[self.timezoneTableView registerForDraggedTypes: [NSArray arrayWithObject: CLDragSessionKey]];
}
-(id)copyWithZone:(NSZone *)zone
{
id copy = [[[self class] alloc] initWithWindowNibName:@"PreferencesWindow"];
id copy = [[[self class] alloc] initWithWindowNibName:CLPreferencesNibIdentifier];
if (copy)
{
@ -116,10 +115,9 @@ static PreferencesWindowController *sharedPreferences = nil;
/*Using a thread safe pattern*/
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedPreferences = [[self alloc] initWithWindowNibName:@"PreferencesWindow"];
sharedPreferences = [[self alloc] initWithWindowNibName:CLPreferencesNibIdentifier];
});
}
return sharedPreferences;
@ -143,11 +141,11 @@ static PreferencesWindowController *sharedPreferences = nil;
- (nullable id)tableView:(NSTableView *)tableView objectValueForTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row
{
if ([[tableColumn identifier] isEqualToString:@"timezoneName"])
if ([[tableColumn identifier] isEqualToString:CLPreferencesTimezoneNameColumnIdentifier])
{
return self.selectedTimeZones[row][@"timezoneName"];
return self.selectedTimeZones[row][CLTimezoneName];
}
else if([[tableColumn identifier] isEqualToString:@"availableTimezones"])
else if([[tableColumn identifier] isEqualToString:CLPreferencesAvailableTimezoneColumnIdentifier])
{
if (self.searchField.stringValue.length > 0)
{
@ -156,11 +154,11 @@ static PreferencesWindowController *sharedPreferences = nil;
return self.timeZoneArray[row];
}
else if([[tableColumn identifier] isEqualToString:@"label"])
else if([[tableColumn identifier] isEqualToString:CLPreferencesCustomLabelColumnIdentifier])
{
return self.selectedTimeZones[row][@"customLabel"];
return self.selectedTimeZones[row][CLCustomLabel];
}
if ([tableColumn.identifier isEqualToString:@"abbreviation"])
if ([tableColumn.identifier isEqualToString:CLPreferencesAbbreviationColumnIdentifier])
{
if (self.searchField.stringValue.length > 0)
{
@ -178,14 +176,14 @@ static PreferencesWindowController *sharedPreferences = nil;
{
if ([object isKindOfClass:[NSString class]])
{
NSDictionary *timezoneDictionary = self.selectedTimeZones[row];
NSDictionary *mutableTimeZoneDict = [timezoneDictionary mutableCopy];
[mutableTimeZoneDict setValue:object forKey:@"customLabel"];
[mutableTimeZoneDict setValue:object forKey:CLCustomLabel];
[self.selectedTimeZones replaceObjectAtIndex:row withObject:mutableTimeZoneDict];
[[NSUserDefaults standardUserDefaults] setObject:self.selectedTimeZones forKey:@"defaultPreferences"];
[[NSUserDefaults standardUserDefaults] setObject:self.selectedTimeZones forKey:CLDefaultPreferenceKey];
[self refreshMainTableview];
}
}
- (IBAction)addTimeZone:(id)sender
@ -214,7 +212,7 @@ static PreferencesWindowController *sharedPreferences = nil;
for (NSDictionary *timezoneDictionary in self.selectedTimeZones)
{
NSString *name = timezoneDictionary[@"timezoneName"];
NSString *name = timezoneDictionary[CLTimezoneName];
if (self.searchField.stringValue.length > 0) {
if ([name isEqualToString:self.filteredArray[self.availableTimezoneTableView.selectedRow]])
@ -237,11 +235,12 @@ static PreferencesWindowController *sharedPreferences = nil;
self.filteredArray[self.availableTimezoneTableView.selectedRow] :
self.timeZoneArray[self.availableTimezoneTableView.selectedRow];
NSDictionary *newTimezoneToAdd = @{@"timezoneName" : selectedTimezone, @"customLabel" : @""};
NSDictionary *newTimezoneToAdd = @{CLTimezoneName : selectedTimezone,
CLCustomLabel : CLEmptyString};
[self.selectedTimeZones addObject:newTimezoneToAdd];
NSArray *defaultTimeZones = [[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPreferences"];
NSArray *defaultTimeZones = [[NSUserDefaults standardUserDefaults] objectForKey:CLDefaultPreferenceKey];
NSMutableArray *newDefaults;
if (defaultTimeZones == nil)
@ -253,7 +252,7 @@ static PreferencesWindowController *sharedPreferences = nil;
[newDefaults addObject:newTimezoneToAdd];
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:@"defaultPreferences"];
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:CLDefaultPreferenceKey];
[self.timezoneTableView reloadData];
@ -264,7 +263,7 @@ static PreferencesWindowController *sharedPreferences = nil;
- (void)clearLabel
{
self.messageLabel.stringValue = @"";
self.messageLabel.stringValue = CLEmptyString;
}
- (IBAction)closePanel:(id)sender
@ -297,7 +296,7 @@ static PreferencesWindowController *sharedPreferences = nil;
NSMutableArray *newDefaults = [[NSMutableArray alloc] initWithArray:self.selectedTimeZones];
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:@"defaultPreferences"];
[[NSUserDefaults standardUserDefaults] setObject:newDefaults forKey:CLDefaultPreferenceKey];
[self.timezoneTableView reloadData];
@ -325,7 +324,7 @@ static PreferencesWindowController *sharedPreferences = nil;
{
if (self.searchField.stringValue.length > 0) {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF CONTAINS[cd] %@", self.searchField.stringValue];
NSPredicate *predicate = [NSPredicate predicateWithFormat:CLPredicateKey, self.searchField.stringValue];
self.filteredArray = [self.timeZoneArray filteredArrayUsingPredicate:predicate];
}
@ -353,15 +352,6 @@ static PreferencesWindowController *sharedPreferences = nil;
}
- (IBAction)showOnlyCityName:(id)sender {
NSButton *checkbox = (NSButton *)sender;
[[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithInteger:checkbox.state] forKey:@"showOnlyCity"];
[self refreshMainTableview];
}
#pragma mark Reordering
- (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
@ -369,9 +359,9 @@ static PreferencesWindowController *sharedPreferences = nil;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes];
[pboard declareTypes:[NSArray arrayWithObject:@"public.text"] owner:self];
[pboard declareTypes:[NSArray arrayWithObject:CLDragSessionKey] owner:self];
[pboard setData:data forType:@"public.text"];
[pboard setData:data forType:CLDragSessionKey];
return YES;
}
@ -385,13 +375,13 @@ static PreferencesWindowController *sharedPreferences = nil;
NSPasteboard *pBoard = [info draggingPasteboard];
NSData *data = [pBoard dataForType:@"public.text"];
NSData *data = [pBoard dataForType:CLDragSessionKey];
NSIndexSet *rowIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:data];
[self.selectedTimeZones exchangeObjectAtIndex:rowIndexes.firstIndex withObjectAtIndex:row];
[[NSUserDefaults standardUserDefaults] setObject:self.selectedTimeZones forKey:@"defaultPreferences"];
[[NSUserDefaults standardUserDefaults] setObject:self.selectedTimeZones forKey:CLDefaultPreferenceKey];
[self.timezoneTableView reloadData];

3
Clocker/Rate App/iRate.m

@ -33,6 +33,7 @@
#import "iRate.h"
#import "PanelController.h"
#import "CommonStrings.h"
#import <Availability.h>
#if !__has_feature(objc_arc)
@ -185,7 +186,7 @@ static NSString *const iRateMacAppStoreURLFormat = @"macappstore://itunes.apple.
{
self.appStoreCountry = @"eu";
}
else if (!self.appStoreCountry || [[self.appStoreCountry stringByReplacingOccurrencesOfString:@"[A-Za-z]{2}" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, 2)] length])
else if (!self.appStoreCountry || [[self.appStoreCountry stringByReplacingOccurrencesOfString:@"[A-Za-z]{2}" withString:CLEmptyString options:NSRegularExpressionSearch range:NSMakeRange(0, 2)] length])
{
self.appStoreCountry = @"us";
}

10
Clocker/de.lproj/Localizable.strings

@ -11,6 +11,16 @@
"Tomorrow" = "Morgen";
"MaximumTimezoneMessage" = "Maximal 10 Zeitzonen erlaubt!";
"DuplicateTimezoneMessage" = "Zeitzone bereits angewählt!";
//Rating App
"Not Really" = "Nicht wirklich";
"Yes!" = "Ja!";
"AskForRatingMessage" = "Bewerten Sie uns im App Store, dann?";
"AskForFeedbackMessage" = "Kümmern Sie geben uns ein Feedback?";
"NoSelected" = "Nein, Danke";
"YesSelected" = "Ja, sure";
"iRateMessageTitle" = "Bewerte %@";
"iRateAppMessage" = "Wenn dir %@ gefällt, würdest Du es bitte bewerten? Dies wird nicht länger als eine Minute dauern. Danke für die Unterstützung!";
"iRateGameMessage" = "Wenn dir %@ gefällt, würdest Du es bitte bewerten? Dies wird nicht länger als eine Minute dauern. Danke für die Unterstützung!";

29
Clocker/de.lproj/PreferencesWindow.xib

@ -29,7 +29,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button toolTip="Add a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DCz-qN-ydK">
<rect key="frame" x="11" y="89" width="21" height="22"/>
<rect key="frame" x="11" y="67" width="21" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="aUK-f8-pvY"/>
<constraint firstAttribute="width" constant="21" id="hAr-3f-KNJ"/>
@ -43,7 +43,7 @@
</connections>
</button>
<button toolTip="Remove a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ixe-Sn-8qT">
<rect key="frame" x="32" y="89" width="21" height="22"/>
<rect key="frame" x="32" y="67" width="21" height="22"/>
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="SVO-Wt-Mfb">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@ -53,13 +53,13 @@
</connections>
</button>
<scrollView focusRingType="none" autohidesScrollers="YES" horizontalLineScroll="22" horizontalPageScroll="10" verticalLineScroll="22" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cI0-M7-C9h">
<rect key="frame" x="10" y="116" width="419" height="249"/>
<rect key="frame" x="10" y="94" width="419" height="271"/>
<clipView key="contentView" id="WWk-6i-nI7">
<rect key="frame" x="1" y="0.0" width="417" height="248"/>
<rect key="frame" x="1" y="0.0" width="417" height="270"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnSelection="YES" autosaveColumns="NO" rowHeight="20" headerView="dKI-Ue-9QX" id="oKD-AN-gPT">
<rect key="frame" x="0.0" y="0.0" width="417" height="225"/>
<rect key="frame" x="0.0" y="0.0" width="417" height="247"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -113,17 +113,6 @@
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
<button toolTip="Show only the City instead of Continent/City format" translatesAutoresizingMaskIntoConstraints="NO" id="P0l-kc-VxU" customClass="ColoredButton">
<rect key="frame" x="9" y="40" width="202" height="18"/>
<buttonCell key="cell" type="check" title="Nur Stadt / Region Name" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="jaB-eA-S6N">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" size="12" name="Helvetica-Light"/>
</buttonCell>
<connections>
<action selector="showOnlyCityName:" target="-2" id="1lf-cZ-gyt"/>
<binding destination="sEG-Zb-KUM" name="value" keyPath="values.showOnlyCity" id="xqX-Jx-epo"/>
</connections>
</button>
<button toolTip="Clocker will start on each system launch" translatesAutoresizingMaskIntoConstraints="NO" id="GDz-2Z-uX5" customClass="ColoredButton">
<rect key="frame" x="9" y="18" width="202" height="18"/>
<buttonCell key="cell" type="check" title="Starten Clocker beim Systemstart" bezelStyle="regularSquare" imagePosition="left" inset="2" id="h45-jZ-cPY">
@ -135,7 +124,7 @@
</connections>
</button>
<button toolTip="Show time using a 24-hour format" translatesAutoresizingMaskIntoConstraints="NO" id="N47-gw-Pay" customClass="ColoredButton">
<rect key="frame" x="9" y="62" width="343" height="22"/>
<rect key="frame" x="9" y="40" width="343" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="339" id="0eX-T7-EbU"/>
<constraint firstAttribute="height" constant="18" id="qwS-Bk-vmy"/>
@ -152,16 +141,12 @@
</subviews>
<constraints>
<constraint firstItem="DCz-qN-ydK" firstAttribute="top" secondItem="cI0-M7-C9h" secondAttribute="bottom" constant="6" id="6Ye-VD-kSE"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="DUR-uK-Ncx"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="FLl-Pc-Gzn"/>
<constraint firstItem="cI0-M7-C9h" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="10" id="Fy5-6V-gu1"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="KEz-Rp-e05"/>
<constraint firstAttribute="bottom" secondItem="GDz-2Z-uX5" secondAttribute="bottom" constant="20" id="NM6-qW-sLG"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="P0l-kc-VxU" secondAttribute="bottom" constant="8" id="NW3-cd-t0e"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="leading" secondItem="DCz-qN-ydK" secondAttribute="trailing" id="TLA-Fw-F7P"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="Tfe-Y8-KcS"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="width" secondItem="P0l-kc-VxU" secondAttribute="width" id="VUD-7V-5SX"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="Waz-CP-UWF"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="height" secondItem="P0l-kc-VxU" secondAttribute="height" id="c2z-Ik-d6W"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="top" secondItem="ixe-Sn-8qT" secondAttribute="bottom" constant="8" id="gbd-HA-u9p"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="hXb-69-tI0"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="width" secondItem="DCz-qN-ydK" secondAttribute="width" id="o7k-jf-cL0"/>

9
Clocker/en.lproj/Localizable.strings

@ -11,6 +11,15 @@
"Tomorrow" = "Tomorrow";
"MaximumTimezoneMessage" = "Maximum 10 timezones allowed!";
"DuplicateTimezoneMessage" = "Timezone has already been selected!";
//Rating App
"Not Really" = "Not Really";
"Yes!" = "Yes!";
"AskForRatingMessage" = "Rate us on the App Store, then?";
"AskForFeedbackMessage" = "Mind giving us some feedback?";
"NoSelected" = "No, thanks";
"YesSelected" = "Ok, sure";
"iRateMessageTitle" = "Rate %@";
"iRateAppMessage" = "If you enjoy using %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!";
"iRateGameMessage" = "If you enjoy playing %@, would you mind taking a moment to rate it? It won’t take more than a minute. Thanks for your support!";

6
Clocker/en.lproj/Panel.xib

@ -194,7 +194,7 @@
</scroller>
</scrollView>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HR1-ZK-Ey0">
<rect key="frame" x="0.0" y="2" width="280" height="22"/>
<rect key="frame" x="1" y="2" width="278" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="IxM-FF-J1F"/>
</constraints>
@ -235,12 +235,12 @@
</subviews>
<constraints>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="top" secondItem="6" secondAttribute="top" constant="8" id="1g0-Hm-7Gh"/>
<constraint firstAttribute="trailing" secondItem="HR1-ZK-Ey0" secondAttribute="trailing" id="1ol-mo-aQU"/>
<constraint firstAttribute="trailing" secondItem="HR1-ZK-Ey0" secondAttribute="trailing" constant="1" id="1ol-mo-aQU"/>
<constraint firstAttribute="bottom" secondItem="HR1-ZK-Ey0" secondAttribute="bottom" constant="2" id="Jtb-Nx-FYR"/>
<constraint firstAttribute="bottom" secondItem="nTt-pf-Hw2" secondAttribute="bottom" constant="2" id="QoV-TI-KVJ"/>
<constraint firstAttribute="bottom" secondItem="OFy-u1-TnH" secondAttribute="bottom" constant="2" id="Ubf-Mv-WMp"/>
<constraint firstAttribute="trailing" secondItem="4Gd-Nv-fXr" secondAttribute="trailing" constant="-1" id="XP6-W0-2XT"/>
<constraint firstItem="HR1-ZK-Ey0" firstAttribute="leading" secondItem="6" secondAttribute="leading" id="XQ8-hU-ayC"/>
<constraint firstItem="HR1-ZK-Ey0" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="1" id="XQ8-hU-ayC"/>
<constraint firstItem="4Gd-Nv-fXr" firstAttribute="leading" secondItem="6" secondAttribute="leading" constant="-1" id="fHc-VQ-mJ3"/>
<constraint firstAttribute="trailing" secondItem="OFy-u1-TnH" secondAttribute="trailing" constant="5" id="p2a-qj-LHE"/>
<constraint firstItem="nTt-pf-Hw2" firstAttribute="leading" secondItem="6" secondAttribute="leading" id="pKl-Ay-0cB"/>

29
Clocker/en.lproj/PreferencesWindow.xib

@ -29,7 +29,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button toolTip="Add a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DCz-qN-ydK">
<rect key="frame" x="11" y="89" width="21" height="22"/>
<rect key="frame" x="11" y="67" width="21" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="aUK-f8-pvY"/>
<constraint firstAttribute="width" constant="21" id="hAr-3f-KNJ"/>
@ -43,7 +43,7 @@
</connections>
</button>
<button toolTip="Remove a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ixe-Sn-8qT">
<rect key="frame" x="32" y="89" width="21" height="22"/>
<rect key="frame" x="32" y="67" width="21" height="22"/>
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="SVO-Wt-Mfb">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@ -53,13 +53,13 @@
</connections>
</button>
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="22" horizontalPageScroll="10" verticalLineScroll="22" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cI0-M7-C9h">
<rect key="frame" x="10" y="116" width="419" height="249"/>
<rect key="frame" x="10" y="94" width="419" height="271"/>
<clipView key="contentView" id="WWk-6i-nI7">
<rect key="frame" x="0.0" y="0.0" width="419" height="249"/>
<rect key="frame" x="0.0" y="0.0" width="419" height="271"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnSelection="YES" autosaveColumns="NO" rowHeight="20" headerView="dKI-Ue-9QX" id="oKD-AN-gPT">
<rect key="frame" x="0.0" y="0.0" width="419" height="226"/>
<rect key="frame" x="0.0" y="0.0" width="419" height="248"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -113,17 +113,6 @@
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
<button toolTip="Show only the City instead of Continent/City format" translatesAutoresizingMaskIntoConstraints="NO" id="P0l-kc-VxU" customClass="ColoredButton">
<rect key="frame" x="9" y="40" width="191" height="18"/>
<buttonCell key="cell" type="check" title="Show only City/Region name" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="jaB-eA-S6N">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" size="12" name="Helvetica-Light"/>
</buttonCell>
<connections>
<action selector="showOnlyCityName:" target="-2" id="1lf-cZ-gyt"/>
<binding destination="sEG-Zb-KUM" name="value" keyPath="values.showOnlyCity" id="xqX-Jx-epo"/>
</connections>
</button>
<button toolTip="Clocker will start on each system launch" translatesAutoresizingMaskIntoConstraints="NO" id="GDz-2Z-uX5" customClass="ColoredButton">
<rect key="frame" x="9" y="18" width="191" height="18"/>
<buttonCell key="cell" type="check" title="Start Clocker on system startup" bezelStyle="regularSquare" imagePosition="left" inset="2" id="h45-jZ-cPY">
@ -135,7 +124,7 @@
</connections>
</button>
<button toolTip="Show time using a 24-hour format" translatesAutoresizingMaskIntoConstraints="NO" id="N47-gw-Pay" customClass="ColoredButton">
<rect key="frame" x="9" y="62" width="343" height="22"/>
<rect key="frame" x="9" y="40" width="343" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="339" id="0eX-T7-EbU"/>
<constraint firstAttribute="height" constant="18" id="qwS-Bk-vmy"/>
@ -153,18 +142,14 @@
<constraints>
<constraint firstAttribute="bottom" secondItem="GDz-2Z-uX5" secondAttribute="bottom" constant="20" id="5Dp-Q0-Wed"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="top" secondItem="cI0-M7-C9h" secondAttribute="bottom" constant="6" id="6Ye-VD-kSE"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="DUR-uK-Ncx"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="FLl-Pc-Gzn"/>
<constraint firstItem="cI0-M7-C9h" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="10" id="Fy5-6V-gu1"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="P0l-kc-VxU" secondAttribute="bottom" constant="8" id="NW3-cd-t0e"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="leading" secondItem="DCz-qN-ydK" secondAttribute="trailing" id="TLA-Fw-F7P"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="Tfe-Y8-KcS"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="width" secondItem="P0l-kc-VxU" secondAttribute="width" id="VUD-7V-5SX"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="Waz-CP-UWF"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="height" secondItem="P0l-kc-VxU" secondAttribute="height" id="c2z-Ik-d6W"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="top" secondItem="ixe-Sn-8qT" secondAttribute="bottom" constant="8" id="gbd-HA-u9p"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="hXb-69-tI0"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="width" secondItem="DCz-qN-ydK" secondAttribute="width" id="o7k-jf-cL0"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="pUn-i9-pBy"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="height" secondItem="DCz-qN-ydK" secondAttribute="height" id="rsK-UP-Umg"/>
<constraint firstItem="cI0-M7-C9h" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" constant="8" id="u5H-Ff-ivt"/>
<constraint firstAttribute="trailing" secondItem="cI0-M7-C9h" secondAttribute="trailing" constant="10" id="ut9-6b-cdu"/>

8
Clocker/fr.lproj/Localizable.strings

@ -13,6 +13,14 @@
"MaximumTimezoneMessage" = "Maximum 10 fuseaux horaires autorisés!";
"DuplicateTimezoneMessage" = "Fuseau horaire a déjà été sélectionnée!";
//Rating App
"Not Really" = "Pas vraiment";
"Yes!" = "Oui!!";
"AskForRatingMessage" = "Voter pour nous sur l'App Store?";
"AskForFeedbackMessage" = "Rappelez- nous donner de la rétroaction?";
"NoSelected" = "Non";
"YesSelected" = "Qui!";
"iRateMessageTitle" = "Notez %@";
"iRateAppMessage" = "Si vous aimez utiliser %@, n'oubliez pas de donner votre avis sur l'App Store. Cela ne prend qu'une minute. Merci d'avance pour votre soutien !";
"iRateGameMessage" = "Si vous aimez jouer à %@, n'oubliez pas de donner votre avis sur l'App Store. Cela ne prend qu'une minute. Merci d'avance pour votre soutien !";

2
Clocker/fr.lproj/Panel.xib

@ -193,7 +193,7 @@
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HR1-ZK-Ey0">
<textField verticalHuggingPriority="750" preferredMaxLayoutWidth="280" translatesAutoresizingMaskIntoConstraints="NO" id="HR1-ZK-Ey0">
<rect key="frame" x="0.0" y="2" width="280" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="IxM-FF-J1F"/>

29
Clocker/fr.lproj/PreferencesWindow.xib

@ -29,7 +29,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DCz-qN-ydK">
<rect key="frame" x="11" y="89" width="21" height="22"/>
<rect key="frame" x="11" y="67" width="21" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="aUK-f8-pvY"/>
<constraint firstAttribute="width" constant="21" id="hAr-3f-KNJ"/>
@ -43,7 +43,7 @@
</connections>
</button>
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ixe-Sn-8qT">
<rect key="frame" x="32" y="89" width="21" height="22"/>
<rect key="frame" x="32" y="67" width="21" height="22"/>
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="SVO-Wt-Mfb">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@ -53,13 +53,13 @@
</connections>
</button>
<scrollView focusRingType="none" autohidesScrollers="YES" horizontalLineScroll="22" horizontalPageScroll="10" verticalLineScroll="22" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cI0-M7-C9h">
<rect key="frame" x="10" y="116" width="419" height="249"/>
<rect key="frame" x="10" y="94" width="419" height="271"/>
<clipView key="contentView" id="WWk-6i-nI7">
<rect key="frame" x="1" y="0.0" width="417" height="248"/>
<rect key="frame" x="1" y="0.0" width="417" height="270"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnSelection="YES" autosaveColumns="NO" rowHeight="20" headerView="dKI-Ue-9QX" id="oKD-AN-gPT">
<rect key="frame" x="0.0" y="0.0" width="417" height="225"/>
<rect key="frame" x="0.0" y="0.0" width="417" height="247"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -113,17 +113,6 @@
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
<button translatesAutoresizingMaskIntoConstraints="NO" id="P0l-kc-VxU" customClass="ColoredButton">
<rect key="frame" x="9" y="40" width="422" height="18"/>
<buttonCell key="cell" type="check" title="Afficher uniquement Nom de la ville / région" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="jaB-eA-S6N">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" size="12" name="Helvetica-Light"/>
</buttonCell>
<connections>
<action selector="showOnlyCityName:" target="-2" id="1lf-cZ-gyt"/>
<binding destination="sEG-Zb-KUM" name="value" keyPath="values.showOnlyCity" id="xqX-Jx-epo"/>
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="GDz-2Z-uX5" customClass="ColoredButton">
<rect key="frame" x="9" y="18" width="422" height="18"/>
<buttonCell key="cell" type="check" title="Commencez Clocker au démarrage du système" bezelStyle="regularSquare" imagePosition="left" inset="2" id="h45-jZ-cPY">
@ -135,7 +124,7 @@
</connections>
</button>
<button translatesAutoresizingMaskIntoConstraints="NO" id="N47-gw-Pay" customClass="ColoredButton">
<rect key="frame" x="9" y="62" width="422" height="22"/>
<rect key="frame" x="9" y="40" width="422" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="18" id="qwS-Bk-vmy"/>
</constraints>
@ -153,15 +142,11 @@
<constraint firstAttribute="trailing" secondItem="GDz-2Z-uX5" secondAttribute="trailing" constant="10" id="6By-7K-Hwb"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="top" secondItem="cI0-M7-C9h" secondAttribute="bottom" constant="6" id="6Ye-VD-kSE"/>
<constraint firstAttribute="trailing" secondItem="N47-gw-Pay" secondAttribute="trailing" constant="10" id="6cs-zV-y7y"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="DUR-uK-Ncx"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="FLl-Pc-Gzn"/>
<constraint firstItem="cI0-M7-C9h" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="10" id="Fy5-6V-gu1"/>
<constraint firstAttribute="trailing" secondItem="P0l-kc-VxU" secondAttribute="trailing" constant="10" id="KUA-Ge-Nto"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="P0l-kc-VxU" secondAttribute="bottom" constant="8" id="NW3-cd-t0e"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="leading" secondItem="DCz-qN-ydK" secondAttribute="trailing" id="TLA-Fw-F7P"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="Tfe-Y8-KcS"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="Waz-CP-UWF"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="height" secondItem="P0l-kc-VxU" secondAttribute="height" id="c2z-Ik-d6W"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="ZOk-F2-xQI"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="top" secondItem="ixe-Sn-8qT" secondAttribute="bottom" constant="8" id="gbd-HA-u9p"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="hXb-69-tI0"/>
<constraint firstAttribute="bottom" secondItem="GDz-2Z-uX5" secondAttribute="bottom" constant="20" id="nbQ-fG-Q7y"/>

9
Clocker/ja.lproj/Localizable.strings

@ -11,6 +11,15 @@
"Tomorrow" = "明日";
"MaximumTimezoneMessage" = "最大10タイムゾーンを許可します";
"DuplicateTimezoneMessage" = "タイムゾーンが既に選択されています";
//Rating App
"Not Really" = "あんまり";
"Yes!" = "はい!";
"AskForRatingMessage" = "その後、 App Storeで私たちを評価します";
"AskForFeedbackMessage" = "私たちにいくつかのフィードバックを与えるマインド";
"NoSelected" = "結構です";
"YesSelected" = "必ず、 [OK]を";
"iRateMessageTitle" = "%@の評価";
"iRateAppMessage" = "%@をお使いいただき大変ありがとうございます。もしよろしければ1分程で済みますので、このアプリの評価をお願いします。ご協力感謝いたします!";
"iRateGameMessage" = "%@をプレイしていただき大変ありがとうございます。もしよろしければ1分程で済みますので、このアプリの評価をお願いします。ご協力感謝いたします!";

29
Clocker/ja.lproj/PreferencesWindow.xib

@ -29,7 +29,7 @@
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button toolTip="Add a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DCz-qN-ydK">
<rect key="frame" x="11" y="95" width="21" height="22"/>
<rect key="frame" x="11" y="70" width="21" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="aUK-f8-pvY"/>
<constraint firstAttribute="width" constant="21" id="hAr-3f-KNJ"/>
@ -43,7 +43,7 @@
</connections>
</button>
<button toolTip="Remove a timezone" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ixe-Sn-8qT">
<rect key="frame" x="32" y="95" width="21" height="22"/>
<rect key="frame" x="32" y="70" width="21" height="22"/>
<buttonCell key="cell" type="smallSquare" bezelStyle="smallSquare" image="NSRemoveTemplate" imagePosition="overlaps" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="SVO-Wt-Mfb">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@ -53,13 +53,13 @@
</connections>
</button>
<scrollView focusRingType="none" autohidesScrollers="YES" horizontalLineScroll="22" horizontalPageScroll="10" verticalLineScroll="22" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cI0-M7-C9h">
<rect key="frame" x="10" y="122" width="419" height="243"/>
<rect key="frame" x="10" y="97" width="419" height="268"/>
<clipView key="contentView" id="WWk-6i-nI7">
<rect key="frame" x="1" y="0.0" width="417" height="242"/>
<rect key="frame" x="1" y="0.0" width="417" height="267"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnSelection="YES" autosaveColumns="NO" rowHeight="20" headerView="dKI-Ue-9QX" id="oKD-AN-gPT">
<rect key="frame" x="0.0" y="0.0" width="417" height="219"/>
<rect key="frame" x="0.0" y="0.0" width="417" height="244"/>
<autoresizingMask key="autoresizingMask"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -113,17 +113,6 @@
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
<button toolTip="Show only the City instead of Continent/City format" translatesAutoresizingMaskIntoConstraints="NO" id="P0l-kc-VxU" customClass="ColoredButton">
<rect key="frame" x="9" y="43" width="190" height="21"/>
<buttonCell key="cell" type="check" title="唯一の都市/地域名を表示" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="jaB-eA-S6N">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" size="12" name="PingFangSC-Light"/>
</buttonCell>
<connections>
<action selector="showOnlyCityName:" target="-2" id="1lf-cZ-gyt"/>
<binding destination="sEG-Zb-KUM" name="value" keyPath="values.showOnlyCity" id="xqX-Jx-epo"/>
</connections>
</button>
<button toolTip="Clocker will start on each system launch" translatesAutoresizingMaskIntoConstraints="NO" id="GDz-2Z-uX5" customClass="ColoredButton">
<rect key="frame" x="9" y="18" width="190" height="21"/>
<buttonCell key="cell" type="check" title="システム起動時に計時係を開始" bezelStyle="regularSquare" imagePosition="left" inset="2" id="h45-jZ-cPY">
@ -135,7 +124,7 @@
</connections>
</button>
<button toolTip="Show time using a 24-hour format" translatesAutoresizingMaskIntoConstraints="NO" id="N47-gw-Pay" customClass="ColoredButton">
<rect key="frame" x="9" y="68" width="343" height="22"/>
<rect key="frame" x="9" y="43" width="343" height="22"/>
<constraints>
<constraint firstAttribute="width" constant="339" id="0eX-T7-EbU"/>
<constraint firstAttribute="height" constant="18" id="qwS-Bk-vmy"/>
@ -152,16 +141,12 @@
</subviews>
<constraints>
<constraint firstItem="DCz-qN-ydK" firstAttribute="top" secondItem="cI0-M7-C9h" secondAttribute="bottom" constant="6" id="6Ye-VD-kSE"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="DUR-uK-Ncx"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="FLl-Pc-Gzn"/>
<constraint firstItem="cI0-M7-C9h" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="10" id="Fy5-6V-gu1"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="P0l-kc-VxU" secondAttribute="bottom" constant="8" id="NW3-cd-t0e"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="leading" secondItem="DCz-qN-ydK" secondAttribute="trailing" id="TLA-Fw-F7P"/>
<constraint firstItem="P0l-kc-VxU" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="Tfe-Y8-KcS"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="width" secondItem="P0l-kc-VxU" secondAttribute="width" id="VUD-7V-5SX"/>
<constraint firstItem="DCz-qN-ydK" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="Waz-CP-UWF"/>
<constraint firstAttribute="bottom" secondItem="GDz-2Z-uX5" secondAttribute="bottom" constant="20" id="Wev-0K-aHT"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="height" secondItem="P0l-kc-VxU" secondAttribute="height" id="c2z-Ik-d6W"/>
<constraint firstItem="GDz-2Z-uX5" firstAttribute="top" secondItem="N47-gw-Pay" secondAttribute="bottom" constant="8" id="byl-hJ-2hK"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="top" secondItem="ixe-Sn-8qT" secondAttribute="bottom" constant="8" id="gbd-HA-u9p"/>
<constraint firstItem="N47-gw-Pay" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="hXb-69-tI0"/>
<constraint firstItem="ixe-Sn-8qT" firstAttribute="width" secondItem="DCz-qN-ydK" secondAttribute="width" id="o7k-jf-cL0"/>

Loading…
Cancel
Save