From 976842f01b1f94134851cabac8a91afda33ca01d Mon Sep 17 00:00:00 2001 From: Samuel Clay Date: Wed, 13 Mar 2013 14:05:58 -0700 Subject: [PATCH] Fixing story traversal buttons to not disappear randomly. --- media/img/icons/circular/g_icn_fav_white.png | Bin 0 -> 562 bytes media/ios/Classes/StoryDetailViewController.m | 28 +++-- media/ios/Classes/StoryPageControl.m | 3 +- media/ios/Classes/StoryPageControl.xib | 22 ++-- media/ios/NewsBlur.xcodeproj/project.pbxproj | 6 +- .../Classes/StoryPageControl~ipad.xib | 21 ++-- .../AddSiteViewController.xib | 114 ++++++------------ .../MoveSiteViewController.xib | 74 +++++------- media/ios/Resources/traverse_done.png | Bin 955 -> 926 bytes media/ios/Resources/traverse_done@2x.png | Bin 1675 -> 1594 bytes media/ios/Resources/traverse_next.png | Bin 674 -> 658 bytes media/ios/Resources/traverse_next@2x.png | Bin 1043 -> 1039 bytes media/ios/Resources/traverse_previous.png | Bin 718 -> 672 bytes media/ios/Resources/traverse_previous@2x.png | Bin 1136 -> 1111 bytes media/ios/static/storyDetailView.css | 53 ++++---- media/ios/static/storyDetailView.js | 4 +- 16 files changed, 149 insertions(+), 176 deletions(-) create mode 100644 media/img/icons/circular/g_icn_fav_white.png diff --git a/media/img/icons/circular/g_icn_fav_white.png b/media/img/icons/circular/g_icn_fav_white.png new file mode 100644 index 0000000000000000000000000000000000000000..0081058a4e5f00fbe0d682d4b8e8a87ec832f5fe GIT binary patch literal 562 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSc;uILpXq-h9ji|$mcBZh%9Dc z&{GCs#)_r(Wk5mE64!_l=c3falFa-(g^-L1 z;Fyx1l&avCS(I9yUzA;};2doBV$Y@?1_s7%PZ!6Kh}NSsE><=<2(*ar-*cSLiQP~( zph-2LNj8E>bq3#-<|WK;6v`IJ{;7Q6Bk*oVvUp0|54$_kZIU};MP_mwV2kiSn$9%g zazgskC|^Ynm#%Y#kqqkpHrC|WBxOG|a(^bcVU5B|dvi6%GzRfsH!^?ANEWUr}Rlt>3QqcJ4@z@Y+ze;qu5Y5%jq^t0K;|luAA*}DG%OLZ2lubkxE;(m3bMl$QliLRY0YgdbRUYBM&yjaWO>8ou=%rD*1 zQj=GBpIfqSpIk)pZ)c_(tR07CcSVZNlF3Qt`|wtAtpUXO@geCxAy5wL0 literal 0 HcmV?d00001 diff --git a/media/ios/Classes/StoryDetailViewController.m b/media/ios/Classes/StoryDetailViewController.m index 1b71e734d..57e2583ba 100644 --- a/media/ios/Classes/StoryDetailViewController.m +++ b/media/ios/Classes/StoryDetailViewController.m @@ -817,7 +817,7 @@ int viewportHeight = self.webView.scrollView.frame.size.height; int topPosition = self.webView.scrollView.contentOffset.y; int bottomPosition = webpageHeight - topPosition - viewportHeight; - BOOL singlePage = webpageHeight - 100 <= viewportHeight; + BOOL singlePage = webpageHeight - 110 <= viewportHeight; BOOL atBottom = bottomPosition < 100; BOOL atTop = topPosition < 10; if (!atTop && !atBottom) { @@ -830,9 +830,22 @@ } completion:^(BOOL finished) { }]; + } else if (singlePage) { + NSLog(@"Single-D"); + CGRect tvf = appDelegate.storyPageControl.traverseView.frame; + + if (bottomPosition > 0) { + appDelegate.storyPageControl.traverseView.frame = CGRectMake(tvf.origin.x, + self.webView.scrollView.frame.size.height - tvf.size.height, + tvf.size.width, tvf.size.height); + } else { + appDelegate.storyPageControl.traverseView.frame = CGRectMake(tvf.origin.x, + (self.webView.scrollView.contentSize.height - self.webView.scrollView.contentOffset.y) - tvf.size.height, + tvf.size.width, tvf.size.height); + } } else if (!singlePage && (atTop && !atBottom)) { NSLog(@"B"); - // Stick to bottom + // Pin to bottom of viewport, regardless of scrollview appDelegate.storyPageControl.traversePinned = YES; appDelegate.storyPageControl.traverseFloating = NO; CGRect tvf = appDelegate.storyPageControl.traverseView.frame; @@ -847,11 +860,9 @@ }]; } else if (appDelegate.storyPageControl.traverseView.alpha == 1 && - appDelegate.storyPageControl.traversePinned && - !atBottom) { + appDelegate.storyPageControl.traversePinned) { NSLog(@"C"); // Scroll with bottom of scrollview, but smoothly - appDelegate.storyPageControl.traversePinned = NO; appDelegate.storyPageControl.traverseFloating = YES; CGRect tvf = appDelegate.storyPageControl.traverseView.frame; [UIView animateWithDuration:.3 delay:0 @@ -861,7 +872,7 @@ (self.webView.scrollView.contentSize.height - self.webView.scrollView.contentOffset.y) - tvf.size.height, tvf.size.width, tvf.size.height); } completion:^(BOOL finished) { - + appDelegate.storyPageControl.traversePinned = NO; }]; } else { NSLog(@"D"); @@ -1356,11 +1367,14 @@ shouldStartLoadWithRequest:(NSURLRequest *)request } else { contentWidthClass = @"NB-iphone"; } + NSString *riverClass = (appDelegate.isRiverView || appDelegate.isSocialView) ? + @"NB-river" : @"NB-non-river"; NSString *jsString = [[NSString alloc] initWithFormat: - @"$('body').attr('class', '%@');" + @"$('body').attr('class', '%@ %@');" "document.getElementById(\"viewport\").setAttribute(\"content\", \"width=%i;initial-scale=1; maximum-scale=1.0; user-scalable=0;\");", contentWidthClass, + riverClass, contentWidth]; [self.webView stringByEvaluatingJavaScriptFromString:jsString]; diff --git a/media/ios/Classes/StoryPageControl.m b/media/ios/Classes/StoryPageControl.m index 72cc5e520..2987ec13d 100644 --- a/media/ios/Classes/StoryPageControl.m +++ b/media/ios/Classes/StoryPageControl.m @@ -443,7 +443,8 @@ self.traverseView.frame = CGRectMake(tvf.origin.x, self.scrollView.frame.size.height - tvf.size.height, tvf.size.width, tvf.size.height); - appDelegate.storyPageControl.traverseView.alpha = 1; + self.traverseView.alpha = 1; + self.traversePinned = YES; } completion:^(BOOL finished) { }]; diff --git a/media/ios/Classes/StoryPageControl.xib b/media/ios/Classes/StoryPageControl.xib index c92a72a07..6aeb758d4 100644 --- a/media/ios/Classes/StoryPageControl.xib +++ b/media/ios/Classes/StoryPageControl.xib @@ -97,7 +97,7 @@ 3 MQA - + 2 @@ -131,14 +131,17 @@ 0.0 20 NEXT - + 3 - MC42NjY2NjY2NjY3AA + MC4zMzMzMzMzMzMzAA + + + 3 + MC4xOTY5OTQ3NTM2AA - 3 - MQA - + 2 + MC41ODgyMzUzMTg3IDAuNTk2MDc4NDU1NCAwLjU3MjU0OTA0NTEAA 3 @@ -175,10 +178,7 @@ IBCocoaTouchFramework 0.5 1 - - 3 - MC4zMzMzMzMzMzMzAA - + 2 MC45MDk4MDM5ODY1IDAuOTE3NjQ3MTIzMyAwLjg5NDExNzcxMwA @@ -4789,7 +4789,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin diff --git a/media/ios/NewsBlur.xcodeproj/project.pbxproj b/media/ios/NewsBlur.xcodeproj/project.pbxproj index 29ae7b36e..647608e0d 100755 --- a/media/ios/NewsBlur.xcodeproj/project.pbxproj +++ b/media/ios/NewsBlur.xcodeproj/project.pbxproj @@ -1104,9 +1104,6 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( - FFDCA0C216E80952000D8E0C /* AdSupport.framework */, - FFDCA0C016E8094F000D8E0C /* Accounts.framework */, - FFDCA0BE16E80944000D8E0C /* Social.framework */, 080E96DDFE201D6D7F000001 /* Classes */, 4307BE511565EDF8007A932A /* Resources */, 43D0451C1565BC090085F811 /* Resources-iPad */, @@ -1161,6 +1158,9 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + FFDCA0C216E80952000D8E0C /* AdSupport.framework */, + FFDCA0C016E8094F000D8E0C /* Accounts.framework */, + FFDCA0BE16E80944000D8E0C /* Social.framework */, FFDCA0B516E80877000D8E0C /* cocoa-oauth */, FFDCA0A316E80866000D8E0C /* REComposeViewController */, FFDC9FBF16E8078E000D8E0C /* FacebookSDK */, diff --git a/media/ios/Resources-iPad/Classes/StoryPageControl~ipad.xib b/media/ios/Resources-iPad/Classes/StoryPageControl~ipad.xib index 34c6b4fee..e2af19d60 100644 --- a/media/ios/Resources-iPad/Classes/StoryPageControl~ipad.xib +++ b/media/ios/Resources-iPad/Classes/StoryPageControl~ipad.xib @@ -95,15 +95,16 @@ 20 NEXT - 3 - MC42NjY2NjY2NjY3AA + 2 + MC4zNjQ3MDU4OTA0IDAuMzY4NjI3NDU4OCAwLjM1Mjk0MTE4NTIAA + + + 2 + MC4zNjQ3MDU4OTA0IDAuMzY4NjI3NDU4OCAwLjM1Mjk0MTE4NTIAA - 3 - MQA - - 2 - + 2 + MC41ODgyMzUzMTg3IDAuNTk2MDc4NDU1NCAwLjU3MjU0OTA0NTEAA 3 @@ -144,7 +145,9 @@ 3 MQA - + + 2 + NSImage @@ -4787,7 +4790,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin diff --git a/media/ios/Resources-iPhone/AddSiteViewController.xib b/media/ios/Resources-iPhone/AddSiteViewController.xib index cb6ce5c71..a2bbf5406 100644 --- a/media/ios/Resources-iPhone/AddSiteViewController.xib +++ b/media/ios/Resources-iPhone/AddSiteViewController.xib @@ -358,12 +358,7 @@ 8 8 26 - Button - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - 3 MC41AA @@ -1380,53 +1375,6 @@ ./Classes/FeedsMenuViewController.h - - FindSitesViewController - UIViewController - - YES - - YES - appDelegate - sitesSearchBar - sitesTable - - - YES - NewsBlurAppDelegate - UISearchBar - UITableView - - - - YES - - YES - appDelegate - sitesSearchBar - sitesTable - - - YES - - appDelegate - NewsBlurAppDelegate - - - sitesSearchBar - UISearchBar - - - sitesTable - UITableView - - - - - IBProjectSource - ./Classes/FindSitesViewController.h - - FirstTimeUserAddFriendsViewController UIViewController @@ -2342,7 +2290,6 @@ feedDetailViewController feedsMenuViewController feedsViewController - findSitesViewController firstTimeUserAddFriendsViewController firstTimeUserAddNewsBlurViewController firstTimeUserAddSitesViewController @@ -2371,7 +2318,6 @@ FeedDetailViewController FeedsMenuViewController NewsBlurViewController - FindSitesViewController FirstTimeUserAddFriendsViewController FirstTimeUserAddNewsBlurViewController FirstTimeUserAddSitesViewController @@ -2403,7 +2349,6 @@ feedDetailViewController feedsMenuViewController feedsViewController - findSitesViewController firstTimeUserAddFriendsViewController firstTimeUserAddNewsBlurViewController firstTimeUserAddSitesViewController @@ -2453,10 +2398,6 @@ feedsViewController NewsBlurViewController - - findSitesViewController - FindSitesViewController - firstTimeUserAddFriendsViewController FirstTimeUserAddFriendsViewController @@ -2723,12 +2664,18 @@ doCloseOriginalStoryViewController doOpenActionSheet loadAddress: + webViewGoBack: + webViewGoForward: + webViewRefresh: YES id id id + id + id + id @@ -2738,6 +2685,9 @@ doCloseOriginalStoryViewController doOpenActionSheet loadAddress: + webViewGoBack: + webViewGoForward: + webViewRefresh: YES @@ -2753,6 +2703,18 @@ loadAddress: id + + webViewGoBack: + id + + + webViewGoForward: + id + + + webViewRefresh: + id + @@ -3097,13 +3059,13 @@ YES YES - activity appDelegate bottomPlaceholderToolbar buttonAction buttonNext buttonPrevious fontSettingsButton + loadingIndicator originalStoryButton pageControl progressView @@ -3115,17 +3077,17 @@ spacer3BarButton spacerBarButton subscribeButton - toolbar + traverseView YES - UIBarButtonItem NewsBlurAppDelegate UIToolbar UIBarButtonItem + UIButton + UIButton UIBarButtonItem - UIBarButtonItem - UIBarButtonItem + UIActivityIndicatorView UIBarButtonItem UIPageControl UIProgressView @@ -3137,20 +3099,20 @@ UIBarButtonItem UIBarButtonItem UIBarButtonItem - UIToolbar + UIView YES YES - activity appDelegate bottomPlaceholderToolbar buttonAction buttonNext buttonPrevious fontSettingsButton + loadingIndicator originalStoryButton pageControl progressView @@ -3162,14 +3124,10 @@ spacer3BarButton spacerBarButton subscribeButton - toolbar + traverseView YES - - activity - UIBarButtonItem - appDelegate NewsBlurAppDelegate @@ -3184,16 +3142,20 @@ buttonNext - UIBarButtonItem + UIButton buttonPrevious - UIBarButtonItem + UIButton fontSettingsButton UIBarButtonItem + + loadingIndicator + UIActivityIndicatorView + originalStoryButton UIBarButtonItem @@ -3239,8 +3201,8 @@ UIBarButtonItem - toolbar - UIToolbar + traverseView + UIView @@ -3354,7 +3316,7 @@ 3 g_icn_folder_add.png - {32, 32} + {16, 16} 2083 diff --git a/media/ios/Resources-iPhone/MoveSiteViewController.xib b/media/ios/Resources-iPhone/MoveSiteViewController.xib index 4370fdf63..09050dc6a 100644 --- a/media/ios/Resources-iPhone/MoveSiteViewController.xib +++ b/media/ios/Resources-iPhone/MoveSiteViewController.xib @@ -228,7 +228,6 @@ {320, 44} - _NS:240 IBCocoaTouchFramework @@ -957,33 +956,6 @@ ./Classes/FeedsMenuViewController.h - - FindSitesViewController - UIViewController - - NewsBlurAppDelegate - UISearchBar - UITableView - - - - appDelegate - NewsBlurAppDelegate - - - sitesSearchBar - UISearchBar - - - sitesTable - UITableView - - - - IBProjectSource - ./Classes/FindSitesViewController.h - - FirstTimeUserAddFriendsViewController UIViewController @@ -1558,7 +1530,6 @@ FeedDetailViewController FeedsMenuViewController NewsBlurViewController - FindSitesViewController FirstTimeUserAddFriendsViewController FirstTimeUserAddNewsBlurViewController FirstTimeUserAddSitesViewController @@ -1607,10 +1578,6 @@ feedsViewController NewsBlurViewController - - findSitesViewController - FindSitesViewController - firstTimeUserAddFriendsViewController FirstTimeUserAddFriendsViewController @@ -1807,6 +1774,9 @@ id id id + id + id + id @@ -1821,6 +1791,18 @@ loadAddress: id + + webViewGoBack: + id + + + webViewGoForward: + id + + + webViewRefresh: + id + NewsBlurAppDelegate @@ -2027,13 +2009,13 @@ - UIBarButtonItem NewsBlurAppDelegate UIToolbar UIBarButtonItem - UIBarButtonItem - UIBarButtonItem + UIButton + UIButton UIBarButtonItem + UIActivityIndicatorView UIBarButtonItem UIPageControl UIProgressView @@ -2045,13 +2027,9 @@ UIBarButtonItem UIBarButtonItem UIBarButtonItem - UIToolbar + UIView - - activity - UIBarButtonItem - appDelegate NewsBlurAppDelegate @@ -2066,16 +2044,20 @@ buttonNext - UIBarButtonItem + UIButton buttonPrevious - UIBarButtonItem + UIButton fontSettingsButton UIBarButtonItem + + loadingIndicator + UIActivityIndicatorView + originalStoryButton UIBarButtonItem @@ -2120,9 +2102,9 @@ subscribeButton UIBarButtonItem - - toolbar - UIToolbar + + traverseView + UIView diff --git a/media/ios/Resources/traverse_done.png b/media/ios/Resources/traverse_done.png index c2504f19a9037d7d638f660485cb8982799dd4ff..9fce9ad811c63611d9ca1f5c8c74aad0880f322f 100644 GIT binary patch delta 795 zcmV+$1LXX>2c8FzkbeUBNkl1AORcER6#dC6ULbqb$l8ayl<24eSP7qM7Wwy>2Kz%o%sY-i^~sGXb^^?KbQ@WSxk z-u_*STRtX6(9zNHP)RHeSy_90bnFvFk?y?`)5HiW6biv^^J8P9+Tzlp=yEw50B~@? zTgf6a1WD2bRjpJz)>D_u*_eGadj(c0GsM=#| zg$O|uMSnHIOt@@p^ZR@Ip<1nWN0w#Ee6#={GCA4xuhyUBi4X(;iNu4i(z!HPsZ@Ub zCV>}*+pYEbym~Y`W#w&pi-;l(G_z=Ke(u!mc6Y5SUY}QASeQSx_)V50CW8PV7!2r7 zo-T>S;wQiOSsXHEliTgCGxwNsG&&_)l#}P!q<=t^AfTB^@%W4skIzV|sya1IbJ8?j z_jo)#JC=zQKu8zsgvaCg6EQ$Dd)@+syeQrRYpsjEpqsql*rd=J^aWjKlVg)9W1uhS zicOA9J~Ic2F4DijI>#p0+fCSAP#(Z@j!kZNT3}Z}c>t+aEANI~1Sx1r*#eL=cBx+c Z02C(O4o~=u>^lGe002ovPDHLkV1mfdeHj1% delta 824 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 VEYnYnSDXL<002ovPDHLkV1meG#-jiL delta 1549 zcmV+o2J-p342unrk$>e$L_t(|obBCxY!hW12kFrb^SQ34A@B@v3enMkuNCMqoqY><@$HaRk&JCV?K zV_Pcv$EdlKUVGPj8gJY0^WXKZ&ppY$d*1G@H)zcGNkNeQz<&=Q44@f65P(nM1L16+ zbPxroUkd{80XQh|f#z(SfC4mdTmx_bKt0Qri2^k6L;!dJ)Czo{O>1Ekpn)p_U=K95 zNCtNGA$^PmKsf-9-Qj#T(?TdfqyRvj-Qir9$(N}MBT_*CWoo)KYJrGUApo!4;hdoK z3lt!d$O52VX@7_)KqMK(A)){gIf_C=0V1hb0MytWPEPIs3J^)B5I~LGP6`lF!fkgr zmnYjn0U}D3+Z|3@;)fI02KeyEK!h(66 z)jBHWKYr^ULeF=e?{9k!AB$$ON-lv9gegFMz{2O|m{+Y_G16o-sv2^L;-9ga?K?%^ zsiv+hRI5th0|zNUI>vDp!-lE~>r~g1MlIzWI&wU`ZAa}*R`t5aEAW9gX$+)O9A`0n zyklGbBY$J<*`k0;EH$-gs?<)@~~qcS*6?J#z-jawkxLbjD^Y$XPgluI%j-TCH8P+RAYjR)2R2 zklw6ZQ8q&DY%7tsp)tC+?Dea^ob-1l?lT#UhJU4tUmUKbdd?nguE6B;s zwca<=wpvH!Oe}ni#Q>dIUq~1zn(Q2=<@<+@91lwu4cAw`WtHm=XH1`F(sHgi3XqQE zj(;AV@w!~QD8@ejYWJ=9_Ny;18vgji!l81<=jG)xSp%d1=}2yxYh0-$c3sO}S@clK zb7=^x6a`2}(p@BNX}!{uY-XjV>tc-pq$9~@OwxVjYt~+`SXUkLHZ=Zsm0fMu#To@j zM>_A^k-d*+&%SSN#k;8LO6l_Yo=Y-#Y-)+=Tad;0n(ACvw=Hu`%FfoVaK-j^X1lW)OKA>XMU4CmkL1&kdAm8 z8atyM9kSh+T!_?kT|n=+>3r}4ix#Mj0;DsC4j)VT<4(y!q;}R-zwg^y>5o#RnSbs` z)ESPm820boHO6c*r3^$zXXo8dzu0xNXtHydn(Jrnq8NLA$?~h(YYG4;dtms;+;T>R z5eB-ud;W<=JN}+F)s^y6!;ry)2ThymGL0Miu&QfX>))*jwOzZ;Vg?ow_`o~Vh3Syz z@Uf_Lt%sG*zTEv6!yD{<08Qg{OMkl7!-BV=F}nBb{kK__2jB!i4;JcL^`@=jjZk}R z>5`We&#;o&zOzou!ZTuC0H86D&YfyH+jZ`Ib63&iNyAKO2G)tr{odU5_QuVjpML(8 z#hQyl2bbc1GL zL=Atu>x!cQ5j8d^en0^tO4TKMZ6*bXC=nF+KwYvO6d;mL1VEMCP6`l7XLG7IK2v~5 zDs=)MIGE}H3J{UwksJ3&QGb9)G9G~sR4O@;R-#Fws&w6!6tzGkE&`R|0jLEcy@Kcs zkL+wq4h4wR0jO8=s&6R@(7@$Knl&CJC_n>`A3$y5RrO3!fCdf^fCH?86Gs8+zar>; z^yUP5UrUhD7$+SHQ2*fv5C+f;z{k3!k@GLu5*}(6=umb50000z-L_t(&f$f(~PTN2ffIm{x0&2*jNPrkLtC0-5LaQEt6Z8bR z00$@+pcjAxgbS1dGzSQ2E48W=tKQU#rMhBM{GI*$cYjoYeW2<2ZhcZ>Su1Fi zCUB5dO=Yd1QTBin&v%zc2aKR0HW`wPpxfBMaXMfG-Q}t0yZgzF5tL2c^W6R<#-;<@L$%i0SHf?z2O!}|rMR)Ib31$kb#_V&%Y^@5U~X)g$1Fu1A|lw@0fWJmvq zZr6Xw(axM9kI2w)p%v)Q9LbgYui5G z+!Wt)E*oj{k{(B^)m{(3g$ppV9Dueq6*P?kasXP|3xArotm}eu0Ge8TC}y#<`}k|Y zsg4w?qkRSa0u9ipi~VLCDby=4g2r)>To^%jc`1eJBsWITZBC_7jdZ{W8geRydNCT* zzRl<4ND6h7HBfdz4sa-iIvbZzRzVKXNLu+M$|5M@r<4}ZOn0ei+yFw9qooXq>+Apk O002ovP6b4+LSTZ2H~MV= delta 540 zcmV+%0^|LX1)>Fzk$?P2L_t(&f$f-0YZE~jfS-m|lQyYX`azMZv>x&UYTJvTW~Fpb zcK<*QUIYssM6`JDrg-R~(4I?j=yB|6PLopb)C3A5(!D6&Jfx>a6HzE0WXU$o$7bUf zv-6yG-+5=4eR$s;cKb3*%P!HN1RMfIC4~w)sV_o;{8WG(kbhTF9Jfo1{hj^%ccg$7 zpkUcfwq0UWE2xnIu-dGeqFO!4WD6k2Zq3A(4p3lF6Y!&#sN2^3l?kRoHU_o&AJhXIN{WqU15p>`0xy&l#a0PX732ar?9Ba{+pQk}ascKqADhv9JVKaT&ohMKqnXP^ef$Mj_1G0JVIxvN(o5)w6p-{2Dk23WgP6d|pf}bE zNQPMiR{E_}Kz|a(vgf-GdaY1E64pb{cQ1A?R6r7z3H)}pS^-HE%bxEpbuLgq64l?G zHx!UWb+_}}kOGo8ejbr2Ac^Cz;N+qLlDL*Z0ZqJCt7W`+zHy~q_h(by^gU2O6YrpP zU;xy%oQ0GlS^@=>DJe%}dcM1)fHEfKh;AsL3`#K~1%H%PDMfVA81V)qrh46q+ z*)NA*V!uYUEoTAX(j{v@xo7r^MFlj58as`d;Ke_w5l3Wd7dD2rx8IvdjyKBPnF1O^ z2Zx7=?-@oFkpjw*+Lp7>*lElpIi>>2ncdypGf9r8fO5nzrjIXQx%@fFF%?iw7{>JR z?K`*rEq@dW$4QQ>fX0w%&VEgDyda+W`T0c01)2(I4B7VePlhp_$V@T9cmNz-;%-bG z9UV>i{C@Y`|*Vt*yynOlU&+g?Z!~?LRU04RC z6c0d60cA{z@idE;T~R<8l43m2z5>1u-NnLDQ~tMT-{!~Fo|P5_(K6nRMnzoSArV~NTOQpyrF<3ieF|Q zP(TvRlkNoyNWv=h`q@kcBw;v3%P#d=p@3wVCh(}=N(CgtJQ?(h&k9HeDHSdI*`PZp zAb;tn-0yu)Cj}(El#7=APnbLE!&K?^XxMJ6lV%_ZG>I4wXa;W~PlJrc|&kqYGEM#1LIK2P>002ovP6b4+LSTZgnW_8$ delta 912 zcmV;B18@9~2$Kkqk$-JTL_t(|obBDcYZGAr$MLVFNUM!dB^B-DWLsK6!4A^mOK&kC zYQ_$g?z%XL`UhAX9Hap^!8(f92pU1IBDf`!h%}4V7ph~iQBxd>LrA&CTyl549Le49 zGc|YVbAfz$p5)SAc1@kXTtuRv0IUPcKoQ7WIdi?$2i>KBB7dz2v34b}FVFeUHAx5NtqAH|_2D@8) z0P*SEnaRG37tZ(Z@9+2h9L>&5Cjnl+dHXB4N4Cw70%}8Jqa!`lCx53}98p3`SQ|P$ zaVinyc&%K{6i^#FaKQhv<)l>+DWDjcotaLKjgIsLIi>=NnUSHRy+MwrfMTRv-q?Kc z^3~5E$A45nF;OmWY~HTzg8~w-3Rcd{S8pgF@oL_F zLjj2w+h!k7K;q4v+6@Xw+{)DZ+Dru`ZWOJYnW?u!0ZB6@;Fi-)1tiVfY4nZH3P>8s zSbsTlvC$nAkT}UYz3#D7KvK`vXI;(c(|D%cOQ4|=9?@(3qrR+>=?@nm}#Dhd%Ak zyjo7#F@GhTrzP^BdUjt|K_%R1)PL)$ zsZdW{T}BVxMq>fAn(ZUtxMY{HM7OR_rCDU;K{ia+=vIgy3cG09%ASKt{9BjFuQ-p6 z+g7uE32b3t!jFA#1i4>qQW8PJ6QZ z0opInUKB(`yeQa9prGjo5IhKy;=!EKyHpQq>z{*q3!$c3)NUIR>3YacUAO6Gcb#U( z2llc|-g)@Vo0;9sxUNf7gk|S}%fNZyq<0OB;V6TIWt+epaDU}+b;1di^^&|v%94@; zWrbxIfiiG(a5~`_y>1H2o&uK8NECX=dZPDIaOq3NzZ-Z<{}32U%_xLmvSl{&GH(I6Sub>$YdjK-=jeId#wAXo$B&JV zT)KE6(Vtm~Y}}>KX0wUrRU*67+KIiSNl+qNT3B4K*BkAq|H8@E$A(00000NkvXXu0mjfL2W4p diff --git a/media/ios/Resources/traverse_previous@2x.png b/media/ios/Resources/traverse_previous@2x.png index c24f4c0c3b6a38f5448483216b835d2abdce146e..ee0e2ecd754e0a16f6237d4116f6102dfccea55e 100644 GIT binary patch delta 980 zcmV;_11tRS2-gUZk$j$G9 z2M`_rUqJ5q0`da#0Q@-%=n)(P&SWNl2ed{}Qm252ZXlGT`O{=~v)#{y3v9o9=GR{~ zyUF&PpPz#kny!umr~oJe7$-mPQ42ti&AvEC*L3w3fM)=v(SHW(uCl@bGSBn4^0Zc{~Nf3I&{voN-Wk{)x zglYwvt}X(29&r|-2qczFpOyeTiYJaZ_-+MKYA}3>l~RM_DOO4iho6dl4JkD+ZN+N3 zI)^U4E$sx?8-D~%S1V|?07(cO#ge|d40($h8n;$33n{fDu8Af0|1TJ15elb@oktff zNXNyM9!siqm0cWhXsy^PlN18dDt3lR3IVwgOV(Gpp9vU-(Z9C3URJ-TIo4U)VXxQ< zvlKot45R5{{*A_I@2b>7QW?~1dho|q=pZznfmlYF6a zf}4M0Z-4h|P86vCM`F_hX{uN4xZy^uqKwrB2XFjiog*r^5t~Y-&L%654@Hq{iQQzH zf)JB=^Mf_F`v8t^5-ho!8(SmC$A9{rekVJW zHS@V4v)wp-snl6MpF7EBv((#*CH6Dz5B9=KZht;EWGWAp8jEaxuv)RxupC8us}JBP`EA|mP^VCh0000e`%!z;-Bt z4jY|QI(R6h4ndTc=ulm{b7_B|L$0CHWs{0+sdSYPx5K{Cah=)uKkv=k z_qliwXTN^|@l~uOD=7dY;PdP42w%jK3LS?Ks*!B)a`Td8B?({xK)-L1 zI3ect4@s5IKu9&jRV$EWWdguipR;g!o}dp4eSbiSS_&IPNh(0ZlFTYHc8G+SM#P$+IqWoC=tfBf9? zKczW=?%i^Wol0#>BpTZi3CsLF-N1?C#}3@QbtfODTrD^=djo>_`p4tVvGdAMsN-Iy zdRLG=wST?cy1M;@8L?5mQ5nI^KamwHN;a8}4?Vw>s?9}twVm`n6k9H2f zU`FiP`ug_miF>QO$koKoQ%yk#QtpS3pGtmTvlh%$tVR%W-_E^Xdy#$l+pp`{p`lzZ zYdc>hSo0m#0g#}TR zs~0;*ErkuDCbxPg%xf^b_N8$-eX)HZ_hsYF+`CZ6rcS69JC4duLxD%C9}u2UNx>m| z#D9{}!3?D=Tw(M``ylib9I{U=sao;wfk(_HVIBhb8)gvRFchn1Gk*Y#g`9;eOs5Ui zY(|CH-R&By`PeZqI)}hIHN}#aa0Q~@I>vGZLCt0sAo{IiY%R@@ek#%2<(mcMm!#e|Iso(?nv#3^xRcoqxnoNtf@ zV|x>5;)_@f@>