From 49e4f4aa17c9073d45deeec7170b9b02fa73f1fb Mon Sep 17 00:00:00 2001 From: "Pfeil, Scott Robert" Date: Tue, 15 Jan 2019 19:10:34 -0500 Subject: [PATCH] assets, strings, and imports --- MVMCoreUI.xcodeproj/project.pbxproj | 35 ++++++++++++- MVMCoreUI/BaseControllers/MFViewController.h | 10 ++-- MVMCoreUI/BaseControllers/MFViewController.m | 42 +++------------- .../MVMCoreUISplitViewController.h | 11 +++++ .../MVMCoreUISplitViewController.m | 30 ++++-------- .../back.imageset/Contents.json | 23 +++++++++ .../Media.xcassets/back.imageset/back.png | Bin 0 -> 242 bytes .../Media.xcassets/back.imageset/back@2x.png | Bin 0 -> 414 bytes .../Media.xcassets/back.imageset/back@3x.png | Bin 0 -> 588 bytes .../fallback_en.imageset/Contents.json | 23 +++++++++ .../fallback_en.imageset/fallback_en.png | Bin 0 -> 3550 bytes .../fallback_en.imageset/fallback_en@2x.png | Bin 0 -> 8411 bytes .../fallback_en.imageset/fallback_en@3x.png | Bin 0 -> 14226 bytes .../fallback_es.imageset/Contents.json | 23 +++++++++ .../fallback_es.imageset/fallback_es.png | Bin 0 -> 3502 bytes .../fallback_es.imageset/fallback_es@2x.png | Bin 0 -> 7428 bytes .../fallback_es.imageset/fallback_es@3x.png | Bin 0 -> 12077 bytes .../Strings/en.lproj/Localizable.strings | 31 ++++++++++++ .../Strings/es-MX.lproj/Localizable.strings | 27 ++++++++++ .../Strings/es.lproj/Localizable.strings | 27 ++++++++++ .../FLAnimatedImage/FLAnimatedImage.h | 0 .../FLAnimatedImage/FLAnimatedImage.m | 0 .../FLAnimatedImage/FLAnimatedImageView.h | 0 .../FLAnimatedImage/FLAnimatedImageView.m | 0 .../Utility/MVMCoreUICommonViewsUtility.h | 6 --- .../Utility/MVMCoreUICommonViewsUtility.m | 46 +----------------- 26 files changed, 219 insertions(+), 115 deletions(-) create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/Contents.json create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back@2x.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back@3x.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_en.imageset/Contents.json create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_en.imageset/fallback_en.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_en.imageset/fallback_en@2x.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_en.imageset/fallback_en@3x.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/Contents.json create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/fallback_es.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/fallback_es@2x.png create mode 100644 MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/fallback_es@3x.png create mode 100644 MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings create mode 100644 MVMCoreUI/SupportingFiles/Strings/es-MX.lproj/Localizable.strings create mode 100644 MVMCoreUI/SupportingFiles/Strings/es.lproj/Localizable.strings rename MVMCoreUI/{ => SupportingFiles}/ThirdParty/FLAnimatedImage/FLAnimatedImage.h (100%) rename MVMCoreUI/{ => SupportingFiles}/ThirdParty/FLAnimatedImage/FLAnimatedImage.m (100%) rename MVMCoreUI/{ => SupportingFiles}/ThirdParty/FLAnimatedImage/FLAnimatedImageView.h (100%) rename MVMCoreUI/{ => SupportingFiles}/ThirdParty/FLAnimatedImage/FLAnimatedImageView.m (100%) diff --git a/MVMCoreUI.xcodeproj/project.pbxproj b/MVMCoreUI.xcodeproj/project.pbxproj index 45361e01..5371ac07 100644 --- a/MVMCoreUI.xcodeproj/project.pbxproj +++ b/MVMCoreUI.xcodeproj/project.pbxproj @@ -123,6 +123,8 @@ D29DF32121ED0CBA003B2FB9 /* LabelView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF31F21ED0CBA003B2FB9 /* LabelView.m */; }; D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF32221ED0DA2003B2FB9 /* TextButtonView.m */; }; D29DF32521ED0DA2003B2FB9 /* TextButtonView.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF32321ED0DA2003B2FB9 /* TextButtonView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D29DF32C21EE8736003B2FB9 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D29DF32821EE8736003B2FB9 /* Localizable.strings */; }; + D29DF32E21EE8C3D003B2FB9 /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D29DF32D21EE8C3D003B2FB9 /* Media.xcassets */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -244,6 +246,10 @@ D29DF31F21ED0CBA003B2FB9 /* LabelView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelView.m; sourceTree = ""; }; D29DF32221ED0DA2003B2FB9 /* TextButtonView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TextButtonView.m; sourceTree = ""; }; D29DF32321ED0DA2003B2FB9 /* TextButtonView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextButtonView.h; sourceTree = ""; }; + D29DF32921EE8736003B2FB9 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; + D29DF32A21EE8736003B2FB9 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = es.lproj/Localizable.strings; sourceTree = ""; }; + D29DF32B21EE8736003B2FB9 /* es-MX */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "es-MX"; path = "es-MX.lproj/Localizable.strings"; sourceTree = ""; }; + D29DF32D21EE8C3D003B2FB9 /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -280,7 +286,6 @@ isa = PBXGroup; children = ( D29DF31421ECECA7003B2FB9 /* SupportingFiles */, - D29DF26621E6A9E4003B2FB9 /* ThirdParty */, D29DF27021E79B2C003B2FB9 /* OtherHandlers */, D29DF14E21E693BB003B2FB9 /* Session */, D29DF13A21E68682003B2FB9 /* Utility */, @@ -559,7 +564,10 @@ D29DF31421ECECA7003B2FB9 /* SupportingFiles */ = { isa = PBXGroup; children = ( + D29DF32721EE8736003B2FB9 /* Strings */, + D29DF26621E6A9E4003B2FB9 /* ThirdParty */, D29DF31521ECECC0003B2FB9 /* Fonts */, + D29DF32D21EE8C3D003B2FB9 /* Media.xcassets */, ); path = SupportingFiles; sourceTree = ""; @@ -575,6 +583,14 @@ path = Fonts; sourceTree = ""; }; + D29DF32721EE8736003B2FB9 /* Strings */ = { + isa = PBXGroup; + children = ( + D29DF32821EE8736003B2FB9 /* Localizable.strings */, + ); + path = Strings; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -684,6 +700,8 @@ hasScannedForEncodings = 0; knownRegions = ( en, + es, + "es-MX", ); mainGroup = D29DF0C221E404D4003B2FB9; productRefGroup = D29DF0CD21E404D4003B2FB9 /* Products */; @@ -705,7 +723,9 @@ D29DF31C21ECECC0003B2FB9 /* NHaasGroteskDSStd-75Bd.otf in Resources */, D29DF24F21E6A177003B2FB9 /* MFTextField.xib in Resources */, D29DF31D21ECECC0003B2FB9 /* NHaasGroteskDSStd-55Rg.otf in Resources */, + D29DF32C21EE8736003B2FB9 /* Localizable.strings in Resources */, D29DF31A21ECECC0003B2FB9 /* NHaasGroteskDSStd-45Lt.otf in Resources */, + D29DF32E21EE8C3D003B2FB9 /* Media.xcassets in Resources */, D29DF31B21ECECC0003B2FB9 /* OCRAExtended.ttf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -772,6 +792,19 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXVariantGroup section */ + D29DF32821EE8736003B2FB9 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + D29DF32921EE8736003B2FB9 /* en */, + D29DF32A21EE8736003B2FB9 /* es */, + D29DF32B21EE8736003B2FB9 /* es-MX */, + ); + name = Localizable.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + /* Begin XCBuildConfiguration section */ D29DF0D221E404D4003B2FB9 /* Debug */ = { isa = XCBuildConfiguration; diff --git a/MVMCoreUI/BaseControllers/MFViewController.h b/MVMCoreUI/BaseControllers/MFViewController.h index b7df0bef..58deb624 100644 --- a/MVMCoreUI/BaseControllers/MFViewController.h +++ b/MVMCoreUI/BaseControllers/MFViewController.h @@ -12,6 +12,10 @@ #import #import #import +@import MVMCore.NSDictionary_MFConvenience; +@import MVMCore.MVMCoreLoadObject; +@import MVMCore.MVMCoreJSONConstants; + #import #import @@ -170,9 +174,6 @@ // Called when the user presses a menu option. Determines if we should load the option the default way or not. - (BOOL)mainTableView:(nonnull MainMenuViewController *)mainTableView shouldSelectOptionAtIndexPath:(nonnull NSIndexPath *)indexPath; -// applies an image to the navigation title --(void)createTitleWithImageName:(nullable NSString *)imageName; - #pragma mark - UITextField Functions // Resigns the first responder. @@ -283,8 +284,5 @@ // subclass to set up intro animations - (void)setupIntroAnimations; -// can be overriden to return the close button action map -- (nullable NSDictionary *)closeButtonActionMap; - @end diff --git a/MVMCoreUI/BaseControllers/MFViewController.m b/MVMCoreUI/BaseControllers/MFViewController.m index fe6729d5..e6873d94 100644 --- a/MVMCoreUI/BaseControllers/MFViewController.m +++ b/MVMCoreUI/BaseControllers/MFViewController.m @@ -110,42 +110,12 @@ } } -- (BOOL)checkforHeaderImage { - return [self.loadObject.pageJSON stringForKey:@"headerLogo"].length; -} - --(void)createTitleWithImageName:(nullable NSString *)imageName { - UIView *titleView = [[UIView alloc] init]; - titleView.bounds = CGRectMake(CGRectGetMaxX(titleView.bounds), CGRectGetMaxY(titleView.bounds), 1, 1); - UIImageView *imageView = [[UIImageView alloc] initWithImage:[MVMCoreUIUtility imageNamed:imageName]]; - imageView.translatesAutoresizingMaskIntoConstraints = NO; - imageView.contentMode = UIViewContentModeScaleAspectFit; - [titleView addSubview:imageView]; - [NSLayoutConstraint constraintPinSubviewToSuperview:imageView]; - [NSLayoutConstraint constraintPinView:imageView heightConstraint:YES heightConstant:12 widthConstraint:YES widthConstant:127]; - // - [NSLayoutConstraint constraintPinView:titleView heightConstraint:YES heightConstant:1 widthConstraint:YES widthConstant:1]; - - [NSLayoutConstraint constraintPinSubview:imageView pinCenterX:YES pinCenterY:YES]; - - titleView.isAccessibilityElement = YES; - titleView.accessibilityLabel = [self screenHeading]; - titleView.accessibilityTraits = UIAccessibilityTraitHeader; - self.navigationItem.titleView = titleView; - -} - - (void)newDataBuildScreen { - if ([self checkforHeaderImage]) { - // user header image - [self createTitleWithImageName:[self.loadObject.pageJSON stringForKey:@"headerLogo"]]; - } else { - // Sets the screen to use the screen heading. - NSString *screenHeading = [self screenHeading]; - - if (screenHeading) { - [self setScreenHeadingMessage:screenHeading]; - } + // Sets the screen to use the screen heading. + NSString *screenHeading = [self screenHeading]; + + if (screenHeading) { + [self setScreenHeadingMessage:screenHeading]; } } @@ -320,7 +290,7 @@ // Update separator. UIView *separatorView = (UIView *)[MVMCoreUISession sharedGlobal].splitViewController.navigationBarSeparator; - separatorView.hidden = (self.class == [MVMCoreUITabBarPageControlViewController class] + separatorView.hidden = ([self.class isKindOfClass:[MVMCoreUITabBarPageControlViewController class]] || self.tabBarPageControl || self.loadObject.requestParameters.tabWasPressed); } diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h index bb888bb2..f57ac191 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.h @@ -33,12 +33,19 @@ typedef NS_ENUM(NSInteger, MFNumberOfDrawers) { @property (nullable, strong, nonatomic) UIBarButtonItem *leftPanelButton; @property (nullable, strong, nonatomic) UIBarButtonItem *rightPanelButton; +@property (nullable, strong, nonatomic) UIBarButtonItem *backButton; + @property (nullable, weak, nonatomic, readonly) UINavigationController *navigationController; // Reference to the top alert view @property (nullable, weak, nonatomic) MVMCoreUITopAlertView *topAlertView; @property (nullable, strong, nonatomic) SeparatorView *navigationBarSeparator; +// References to the current navigation item settings. +@property (nonatomic, readonly) BOOL leftPanelIsAccessible; +@property (nonatomic, readonly) BOOL rightPanelIsAccessible; +@property (nullable, weak, nonatomic, readonly) UIViewController *navigationItemViewController; + // Convenience getter + (nullable instancetype)mainSplitViewController; @@ -56,6 +63,10 @@ typedef NS_ENUM(NSInteger, MFNumberOfDrawers) { - (void)hideRightPanelIfNeededAnimated:(BOOL)animated; - (void)showRightPanelAnimated:(BOOL)animated; +// Setters for the navigation items +- (void)setLeftNavigationItemForViewController:(UIViewController * _Nonnull)viewController accessible:(BOOL)accessible extended:(BOOL)extended; +- (void)setRightNavigationItemForViewController:(UIViewController * _Nonnull)viewController accessible:(BOOL)accessible extended:(BOOL)extended; + // Force hides both drawers. Does not animate or open always extended drawers on ipad either. - (void)forceHideBothDrawers; diff --git a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m index 7db9fd67..d47f8ee3 100644 --- a/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m +++ b/MVMCoreUI/Containers/SplitViewController/MVMCoreUISplitViewController.m @@ -44,8 +44,6 @@ // A view that covers the detail view when the master is out. @property (weak, nonatomic) IBOutlet UIView *mainViewCoverView; -@property (strong, nonatomic) UIBarButtonItem *backButton; - @property (weak, nonatomic) IBOutlet UIProgressView *bottomProgressBar; @property (weak, nonatomic) IBOutlet NSLayoutConstraint *bottomProgressBarHeightConstraint; @@ -63,9 +61,9 @@ typedef NS_OPTIONS(NSInteger, MFExtendedDrawer) { }; @property (nonatomic) MFExtendedDrawer extendedDrawers; -@property (nonatomic) BOOL leftPanelIsAccessible; -@property (nonatomic) BOOL rightPanelIsAccessible; -@property (weak, nonatomic) UIViewController *viewController; +@property (nonatomic, readwrite) BOOL leftPanelIsAccessible; +@property (nonatomic, readwrite) BOOL rightPanelIsAccessible; +@property (weak, nonatomic, readwrite) UIViewController *navigationItemViewController; @property (strong, nonatomic) NSNumber *transitionWidth; // Dismisses any panel @@ -203,7 +201,7 @@ CGFloat const PanelAnimationDuration = 0.2; if ([viewController.navigationController.viewControllers count] > 1) { [leftBarButtonItems addObject:self.backButton]; } - if ((accessible || !extended) && self.leftPanelButton) { + if ((accessible && !extended) && self.leftPanelButton) { [leftBarButtonItems addObject:self.leftPanelButton]; } NSArray *extraButtons = [self additionalLeftButtons]; @@ -219,7 +217,7 @@ CGFloat const PanelAnimationDuration = 0.2; } else { self.leftPanelIsAccessible = leftPanelIsAccessible; } - self.viewController = viewController; + self.navigationItemViewController = viewController; [MVMCoreDispatchUtility performBlockOnMainThread:^{ BOOL extended = NO; if (!self.leftPanelIsAccessible) { @@ -368,7 +366,7 @@ CGFloat const PanelAnimationDuration = 0.2; - (void)setRightNavigationItemForViewController:(UIViewController * _Nonnull)viewController accessible:(BOOL)accessible extended:(BOOL)extended { NSMutableArray *navigationItems = [[NSMutableArray alloc] init]; - if ((accessible || !extended) && self.rightPanelButton) { + if ((accessible && !extended) && self.rightPanelButton) { [navigationItems addObject:self.rightPanelButton]; } NSArray *extraButtons = [self additionalRightButtons]; @@ -408,7 +406,7 @@ CGFloat const PanelAnimationDuration = 0.2; } else { self.rightPanelIsAccessible = rightPanelIsAccessible; } - self.viewController = viewController; + self.navigationItemViewController = viewController; [MVMCoreDispatchUtility performBlockOnMainThread:^{ BOOL extended = NO; @@ -855,8 +853,8 @@ CGFloat const PanelAnimationDuration = 0.2; } - (void)resetDrawers { - [self setLeftPanelIsAccessible:self.leftPanelIsAccessible forViewController:self.viewController]; - [self setRightPanelIsAccessible:self.rightPanelIsAccessible forViewController:self.viewController]; + [self setLeftPanelIsAccessible:self.leftPanelIsAccessible forViewController:self.navigationItemViewController]; + [self setRightPanelIsAccessible:self.rightPanelIsAccessible forViewController:self.navigationItemViewController]; [self.view setNeedsLayout]; [self.view layoutIfNeeded]; @@ -928,16 +926,6 @@ CGFloat const PanelAnimationDuration = 0.2; } } -- (NSString *)getPageTypeForDetailViewController { - - UIViewController *viewController = [self getCurrentDetailViewController]; - if ([viewController conformsToProtocol:@protocol(MVMCoreViewControllerProtocol)] && [viewController respondsToSelector:@selector(pageType)]) { - return ((UIViewController *)viewController).pageType; - } else { - return @"NoPageType"; - } -} - #pragma mark - navigation bar - (void)setNavigationIconColor:(nullable UIColor *)color { diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/Contents.json b/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/Contents.json new file mode 100644 index 00000000..3bad3d0c --- /dev/null +++ b/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "back.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "back@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "back@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back.png b/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back.png new file mode 100644 index 0000000000000000000000000000000000000000..3d2734b6d82d8bedda73e882689e9b569807b165 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^AhsX}8v_I5WEI|GAcwIy$lZxy-8q?;K+YOZ7sn6{ z(c}aNCPR;$wu}@$p=!mBvn-+l4wD=Vb~^Z&vB>u}>l|b-;#(u9(siiurXt^zAFPv( zvV}3QMsD<6(9zg)t6Rq@f?>%o13n|(&x)HQ zxTKdbh^Q%SKg`S-$yzF+b10qlgw+Jo{|ymR9q|kw{T0+WZZv9bWBM4SpeEz$;HndF oRKZu_EDNJX!gPj0J`Yufsrq8I%G*8P0Nu^t>FVdQ&MBb@018z}k^lez literal 0 HcmV?d00001 diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back@2x.png b/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1d64be8bc2b69fb7abcf91510f075c1e989d85fa GIT binary patch literal 414 zcmV;P0b%}$P)Px$SV=@dR7ef&l+8*5K@fyjy{Hj?F^C9>BA5r%=g{ZLK~NDC1VIo4QGz1+7Fyqi zp2KD~JxU)0EvR%)Pfg8k&t$7AgL$i^#0vM8SUj>M#Q|CUlS(O>N!d8Tzi%}L6YEAc zn~T@EVz&0#tp1>27FU)u<3w{zFtX&^k)G6#I@_|;1bxjnyIU_Y!Jx&Uas{^VP05)J zO5&qLwz`Dh1+QS1AEqKulL$EJ!iustN@Bdk@97??ZvbSb`Dvnpfa%w|*})Hx>Uz zQ`=Kd{=OdZSo`9K$Q8H{7sU`@{3>F6DK3j4=*i_-#P~*B6GN~qmj@B!J8@GCL02vq zV$23?6oPfR&;pE~#GV)e4vRy>_(kL}L(q}Ssfh7$h-1#=3r_P?)1&fRssI2007*qo IM6N<$g6C+k%K!iX literal 0 HcmV?d00001 diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back@3x.png b/MVMCoreUI/SupportingFiles/Media.xcassets/back.imageset/back@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..147e2c6ad7dedcd7b68ee3841838cf4504b13205 GIT binary patch literal 588 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 Zl-O@Me8%hEht~=i>dHFs8bw6te*ub4uX6wZ literal 0 HcmV?d00001 diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_en.imageset/fallback_en@3x.png b/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_en.imageset/fallback_en@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..2cc86700d666c62e5a1ed702bba8301c71aa378c GIT binary patch literal 14226 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 literal 0 HcmV?d00001 diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/Contents.json b/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/Contents.json new file mode 100644 index 00000000..3e363ae5 --- /dev/null +++ b/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "fallback_es.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "fallback_es@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "fallback_es@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/fallback_es.png b/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/fallback_es.png new file mode 100644 index 0000000000000000000000000000000000000000..77eef09a6107cb46f85e35a6b4a240f94c6eaa79 GIT binary patch literal 3502 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 literal 0 HcmV?d00001 diff --git a/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/fallback_es@2x.png b/MVMCoreUI/SupportingFiles/Media.xcassets/fallback_es.imageset/fallback_es@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf0eee9e6ed3419f7523b624becf3d9c60eabd6 GIT binary patch literal 7428 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 literal 0 HcmV?d00001 diff --git a/MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings b/MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings new file mode 100644 index 00000000..477a47d0 --- /dev/null +++ b/MVMCoreUI/SupportingFiles/Strings/en.lproj/Localizable.strings @@ -0,0 +1,31 @@ +/* + Localizable.strings + MVMCore + + Created by Pfeil, Scott Robert on 11/28/17. + Copyright © 2017 myverizon. All rights reserved. +*/ + +//// Accessibility +"AccCloseButton" = "Close"; +// Tab +"AccTab" = ", tab"; +"AccTabHint" = "Double tap to select."; +// top alert +"toptabbar_tab_selected" = ", tab, Selected"; +"AccTopAlertClosed" = "Top alert notification is closed."; +"top_alert_notification" = "Top alert notification"; +// Textfield +"textfield_today_string" = "Today"; +"textfield_error_message" = "%@.\n The error message.\n %@"; +"textfield_picker_item" = " picker item"; +"textfield_regular" = " regular"; +"textfield_disabled_state" = "disabled"; +// MDNTextfield +"textfield_contacts_barbutton" = "My Contacts"; +"textfield_phone_format_error_message" = "Invalid phone number format."; +// DigitTextfield +"mfdigittextfield_regular" = " regular"; +// Camera +"AccCameraButton" = "Camera Button"; +"AccCameraHint" = "Double tap to launch camera for scanning"; diff --git a/MVMCoreUI/SupportingFiles/Strings/es-MX.lproj/Localizable.strings b/MVMCoreUI/SupportingFiles/Strings/es-MX.lproj/Localizable.strings new file mode 100644 index 00000000..caeb41c4 --- /dev/null +++ b/MVMCoreUI/SupportingFiles/Strings/es-MX.lproj/Localizable.strings @@ -0,0 +1,27 @@ +/* + Localizable.strings + MVMCore + + Created by Pfeil, Scott Robert on 11/28/17. + Copyright © 2017 myverizon. All rights reserved. +*/ + +"AccCloseButton" = "Cerrar"; +"AccTab" = ", pestaña"; +"AccTabHint" = "Toca dos veces para seleccionar."; +"toptabbar_tab_selected" = ", pestaña, Seleccionado"; +"AccTopAlertClosed" = "La notificación de alerta máxima está desactivada."; +"top_alert_notification" = "Notificación de alerta máxima"; +"textfield_today_string" = "Hoy"; +"textfield_error_message" = "%@.\n El mensaje de error.\n %@"; +"textfield_picker_item" = " artículo de selector"; +"textfield_regular" = " regular"; +"textfield_disabled_state" = "inactivo"; +//MDNTextfield +"textfield_contacts_barbutton" = "Mis contactos"; +"textfield_phone_format_error_message" = "Formato de número de teléfono inválido."; +// DigitTextfield +"mfdigittextfield_regular" = " regular"; +// Camera +"AccCameraButton" = "Botón de cámara"; +"AccCameraHint" = "Toca dos veces para iniciar la cámara para escanear"; diff --git a/MVMCoreUI/SupportingFiles/Strings/es.lproj/Localizable.strings b/MVMCoreUI/SupportingFiles/Strings/es.lproj/Localizable.strings new file mode 100644 index 00000000..caeb41c4 --- /dev/null +++ b/MVMCoreUI/SupportingFiles/Strings/es.lproj/Localizable.strings @@ -0,0 +1,27 @@ +/* + Localizable.strings + MVMCore + + Created by Pfeil, Scott Robert on 11/28/17. + Copyright © 2017 myverizon. All rights reserved. +*/ + +"AccCloseButton" = "Cerrar"; +"AccTab" = ", pestaña"; +"AccTabHint" = "Toca dos veces para seleccionar."; +"toptabbar_tab_selected" = ", pestaña, Seleccionado"; +"AccTopAlertClosed" = "La notificación de alerta máxima está desactivada."; +"top_alert_notification" = "Notificación de alerta máxima"; +"textfield_today_string" = "Hoy"; +"textfield_error_message" = "%@.\n El mensaje de error.\n %@"; +"textfield_picker_item" = " artículo de selector"; +"textfield_regular" = " regular"; +"textfield_disabled_state" = "inactivo"; +//MDNTextfield +"textfield_contacts_barbutton" = "Mis contactos"; +"textfield_phone_format_error_message" = "Formato de número de teléfono inválido."; +// DigitTextfield +"mfdigittextfield_regular" = " regular"; +// Camera +"AccCameraButton" = "Botón de cámara"; +"AccCameraHint" = "Toca dos veces para iniciar la cámara para escanear"; diff --git a/MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImage.h b/MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImage.h similarity index 100% rename from MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImage.h rename to MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImage.h diff --git a/MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImage.m b/MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImage.m similarity index 100% rename from MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImage.m rename to MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImage.m diff --git a/MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImageView.h b/MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImageView.h similarity index 100% rename from MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImageView.h rename to MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImageView.h diff --git a/MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImageView.m b/MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImageView.m similarity index 100% rename from MVMCoreUI/ThirdParty/FLAnimatedImage/FLAnimatedImageView.m rename to MVMCoreUI/SupportingFiles/ThirdParty/FLAnimatedImage/FLAnimatedImageView.m diff --git a/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.h b/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.h index ca0db027..159edeb4 100644 --- a/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.h +++ b/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.h @@ -67,12 +67,6 @@ #pragma mark - Buttons -// Returns a close button. Can pass in the button to use, if not it will create it. Can also specify if we should constrain the height and width to the default. -+ (nonnull UIButton *)closeButton:(nullable UIButton *)button constrainHeightAndWidth:(BOOL)constrainHeightAndWidth; - -// Returns a close button. Can pass in the button to use, if not it will create it. Can also specify if we should constrain the height and width to the default OR with a diameter(applies only when constrainHeightAndWidth is NO). If diameter is 0, the case with constrainHeightAndWidth == YES will be applied -+ (nonnull UIButton *)circleCloseButtonWhiteBackground:(nullable UIButton *)button constrainHeightAndWidth:(BOOL)constrainHeightAndWidth orDiameter:(CGFloat) diameter; - //add the close button (x) to the top left of the view, return the button //@param view: the view to add the close button, it will add to the top right cornor as defult, pass in nil if you only want the reference to the button but not adding it to any view //if verticalCentered is true, the button will pin to the vertical center of the view instead of top right diff --git a/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.m b/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.m index 1dbe51c1..efe5791c 100644 --- a/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.m +++ b/MVMCoreUI/Utility/MVMCoreUICommonViewsUtility.m @@ -254,52 +254,8 @@ static const CGFloat VertialShadowOffset = 6; #pragma mark - Buttons -+ (nonnull UIButton *)closeButton:(nullable UIButton *)button constrainHeightAndWidth:(BOOL)constrainHeightAndWidth { - UIButton *theButton = button; - if (!button) { - theButton = [UIButton buttonWithType:UIButtonTypeCustom]; - } - theButton.tintColor = [UIColor mfRedColor]; - [theButton setImage:[[MVMCoreUIUtility imageNamed:@"close_30px"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] forState:UIControlStateNormal]; - theButton.translatesAutoresizingMaskIntoConstraints = NO; - [theButton setImageEdgeInsets:UIEdgeInsetsMake(5, 10, 5, 0)]; - - // Adds the height and width constraint - if (constrainHeightAndWidth) { - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[theButton(==40)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(theButton)]]; - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[theButton(==40)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(theButton)]]; - } - return theButton; -} - -+ (nonnull UIButton *)circleCloseButtonWhiteBackground:(nullable UIButton *)button constrainHeightAndWidth:(BOOL)constrainHeightAndWidth orDiameter:(CGFloat) diameter { - UIButton *theButton = button; - if (!button) { - theButton = [UIButton buttonWithType:UIButtonTypeCustom]; - } - theButton.tintColor = [UIColor mfGrayColor]; - theButton.backgroundColor = [UIColor whiteColor]; - [theButton setImage:[MVMCoreUIUtility imageNamed:@"close"] forState:UIControlStateNormal]; - theButton.translatesAutoresizingMaskIntoConstraints = NO; - - // Adds the height and width constraint - if (constrainHeightAndWidth || diameter == 0) { - theButton.layer.cornerRadius = 20; - - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[theButton(==40)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(theButton)]]; - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[theButton(==40)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(theButton)]]; - } - else { - theButton.layer.cornerRadius = diameter/2; - - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[theButton(==diameter)]" options:0 metrics:@{@"diameter": @(diameter)} views:NSDictionaryOfVariableBindings(theButton)]]; - [NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[theButton(==diameter)]" options:0 metrics:@{@"diameter": @(diameter)} views:NSDictionaryOfVariableBindings(theButton)]]; - } - return theButton; -} - + (nonnull MFCustomButton *)addCloseButtonToView:(UIView *)view action:(ButtonTapBlock)actionBlock verticalCentered:(BOOL)verticalCentered { - MFCustomButton *button = [[MFCustomButton alloc]initWithFrame:CGRectZero]; + MFCustomButton *button = [[MFCustomButton alloc] initWithFrame:CGRectZero]; button.translatesAutoresizingMaskIntoConstraints = NO; [button setTitle:@"✕" forState:UIControlStateNormal]; button.titleLabel.font = [MFStyler fontForHeadlineAlternative];