From d5a7020239d26ae4525212c9ca81debad356aec6 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Mon, 9 Nov 2020 21:31:29 +0800 Subject: [PATCH 1/2] Adds help text to iOS add account sheets. --- iOS/Account/Account.storyboard | 175 +++++++++++++++++- .../FeedWranglerAccountViewController.swift | 8 + .../FeedbinAccountViewController.swift | 9 + .../NewsBlurAccountViewController.swift | 8 + .../ReaderAPIAccountViewController.swift | 45 +++++ .../accountLocalPad.imageset/Contents.json | 4 +- .../ipad-any-slice.pdf} | Bin 5247 -> 5143 bytes ...ntLocalPad-any.pdf => ipad-dark-slice.pdf} | Bin 5211 -> 5143 bytes .../accountLocalPhone.imageset/Contents.json | 4 +- .../iphone-any-slice.pdf} | Bin 5217 -> 5175 bytes ...calPhone-any.pdf => iphone-dark-slice.pdf} | Bin 5243 -> 5181 bytes 11 files changed, 246 insertions(+), 7 deletions(-) rename iOS/Resources/Assets.xcassets/{accountLocalPhone.imageset/accountLocalPhone-dark.pdf => accountLocalPad.imageset/ipad-any-slice.pdf} (70%) rename iOS/Resources/Assets.xcassets/accountLocalPad.imageset/{accountLocalPad-any.pdf => ipad-dark-slice.pdf} (67%) rename iOS/Resources/Assets.xcassets/{accountLocalPad.imageset/accountLocalPad-dark.pdf => accountLocalPhone.imageset/iphone-any-slice.pdf} (67%) rename iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/{accountLocalPhone-any.pdf => iphone-dark-slice.pdf} (67%) diff --git a/iOS/Account/Account.storyboard b/iOS/Account/Account.storyboard index 5d42f4d88..f8cf163e5 100644 --- a/iOS/Account/Account.storyboard +++ b/iOS/Account/Account.storyboard @@ -1,10 +1,11 @@ - + - + + @@ -47,6 +48,37 @@ + + + + + + + + + + + + + + + + @@ -196,6 +228,24 @@ + + + + + + + + + + + + + @@ -272,7 +322,7 @@ - + @@ -281,6 +331,37 @@ + + + + + + + + + + + + + + + + @@ -430,6 +511,37 @@ + + + + + + + + + + + + + + + + @@ -563,6 +675,37 @@ + + + + + + + + + + + + + + + + @@ -697,8 +840,10 @@ + + @@ -729,6 +874,24 @@ + + + + + + + + + + + + + @@ -801,5 +964,11 @@ + + + + + + diff --git a/iOS/Account/FeedWranglerAccountViewController.swift b/iOS/Account/FeedWranglerAccountViewController.swift index c5dd3944c..5f4bc997b 100644 --- a/iOS/Account/FeedWranglerAccountViewController.swift +++ b/iOS/Account/FeedWranglerAccountViewController.swift @@ -10,6 +10,7 @@ import UIKit import Account import RSWeb import Secrets +import SafariServices class FeedWranglerAccountViewController: UITableViewController { @@ -138,6 +139,13 @@ class FeedWranglerAccountViewController: UITableViewController { } } + @IBAction func signUpWithProvider(_ sender: Any) { + let url = URL(string: "https://feedwrangler.net/users/new")! + let safari = SFSafariViewController(url: url) + safari.modalPresentationStyle = .currentContext + self.present(safari, animated: true, completion: nil) + } + @objc func textDidChange(_ note: Notification) { actionButton.isEnabled = !(emailTextField.text?.isEmpty ?? false) && !(passwordTextField.text?.isEmpty ?? false) } diff --git a/iOS/Account/FeedbinAccountViewController.swift b/iOS/Account/FeedbinAccountViewController.swift index 270fb969f..413a2ec79 100644 --- a/iOS/Account/FeedbinAccountViewController.swift +++ b/iOS/Account/FeedbinAccountViewController.swift @@ -10,6 +10,7 @@ import UIKit import Account import Secrets import RSWeb +import SafariServices class FeedbinAccountViewController: UITableViewController { @@ -138,6 +139,14 @@ class FeedbinAccountViewController: UITableViewController { } } + @IBAction func signUpWithProvider(_ sender: Any) { + let url = URL(string: "https://feedbin.com/signup")! + let safari = SFSafariViewController(url: url) + safari.modalPresentationStyle = .currentContext + self.present(safari, animated: true, completion: nil) + } + + @objc func textDidChange(_ note: Notification) { actionButton.isEnabled = !(emailTextField.text?.isEmpty ?? false) && !(passwordTextField.text?.isEmpty ?? false) } diff --git a/iOS/Account/NewsBlurAccountViewController.swift b/iOS/Account/NewsBlurAccountViewController.swift index 6d5dab361..522b2203e 100644 --- a/iOS/Account/NewsBlurAccountViewController.swift +++ b/iOS/Account/NewsBlurAccountViewController.swift @@ -10,6 +10,7 @@ import UIKit import Account import Secrets import RSWeb +import SafariServices class NewsBlurAccountViewController: UITableViewController { @@ -142,6 +143,13 @@ class NewsBlurAccountViewController: UITableViewController { } } + + @IBAction func signUpWithProvider(_ sender: Any) { + let url = URL(string: "https://newsblur.com")! + let safari = SFSafariViewController(url: url) + safari.modalPresentationStyle = .currentContext + self.present(safari, animated: true, completion: nil) + } @objc func textDidChange(_ note: Notification) { actionButton.isEnabled = !(usernameTextField.text?.isEmpty ?? false) diff --git a/iOS/Account/ReaderAPIAccountViewController.swift b/iOS/Account/ReaderAPIAccountViewController.swift index 5c99618d6..3af06e767 100644 --- a/iOS/Account/ReaderAPIAccountViewController.swift +++ b/iOS/Account/ReaderAPIAccountViewController.swift @@ -10,6 +10,7 @@ import UIKit import Account import Secrets import RSWeb +import SafariServices class ReaderAPIAccountViewController: UITableViewController { @@ -20,6 +21,8 @@ class ReaderAPIAccountViewController: UITableViewController { @IBOutlet weak var apiURLTextField: UITextField! @IBOutlet weak var showHideButton: UIButton! @IBOutlet weak var actionButton: UIButton! + @IBOutlet weak var footerLabel: UILabel! + @IBOutlet weak var signUpButton: UIButton! weak var account: Account? var accountType: AccountType? @@ -57,6 +60,8 @@ class ReaderAPIAccountViewController: UITableViewController { } } + setupFooter() + NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: usernameTextField) NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: passwordTextField) @@ -64,6 +69,25 @@ class ReaderAPIAccountViewController: UITableViewController { } + private func setupFooter() { + switch accountType { + case .bazQux: + footerLabel.text = NSLocalizedString("Sign in to your BazQux account and sync your subscriptions across your devices. Your username and password will be encrypted and stored in Keychain.\n\nDon't have a BazQux account?", comment: "BazQux") + signUpButton.setTitle(NSLocalizedString("Sign Up Here", comment: "BazQux SignUp"), for: .normal) + case .inoreader: + footerLabel.text = NSLocalizedString("Sign in to your InoReader account and sync your subscriptions across your devices. Your username and password will be encrypted and stored in Keychain.\n\nDon't have an InoReader account?", comment: "InoReader") + signUpButton.setTitle(NSLocalizedString("Sign Up Here", comment: "InoReader SignUp"), for: .normal) + case .theOldReader: + footerLabel.text = NSLocalizedString("Sign in to your The Old Reader account and sync your subscriptions across your devices. Your username and password will be encrypted and stored in Keychain.\n\nDon't have a The Old Reader account?", comment: "TOR") + signUpButton.setTitle(NSLocalizedString("Sign Up Here", comment: "TOR SignUp"), for: .normal) + case .freshRSS: + footerLabel.text = NSLocalizedString("Sign in to your FreshRSS instance and sync your subscriptions across your devices. Your username and password will be encrypted and stored in Keychain.\n\nDon't have an FreshRSS instance?", comment: "FreshRSS") + signUpButton.setTitle(NSLocalizedString("Find Out More", comment: "FreshRSS SignUp"), for: .normal) + default: + return + } + } + override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return section == 0 ? ImageHeaderView.rowHeight : super.tableView(tableView, heightForHeaderInSection: section) } @@ -224,6 +248,25 @@ class ReaderAPIAccountViewController: UITableViewController { return true } + @IBAction func signUpWithProvider(_ sender: Any) { + var url: URL! + switch accountType { + case .bazQux: + url = URL(string: "https://bazqux.com")! + case .inoreader: + url = URL(string: "https://www.inoreader.com")! + case .theOldReader: + url = URL(string: "https://theoldreader.com")! + case .freshRSS: + url = URL(string: "https://freshrss.org")! + default: + return + } + let safari = SFSafariViewController(url: url) + safari.modalPresentationStyle = .currentContext + self.present(safari, animated: true, completion: nil) + } + private func apiURL() -> URL? { switch accountType { case .freshRSS: @@ -239,6 +282,8 @@ class ReaderAPIAccountViewController: UITableViewController { } } + + @objc func textDidChange(_ note: Notification) { actionButton.isEnabled = !(usernameTextField.text?.isEmpty ?? false) } diff --git a/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/Contents.json b/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/Contents.json index 9e763872c..e072222a1 100644 --- a/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/Contents.json +++ b/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "accountLocalPad-any.pdf", + "filename" : "ipad-any-slice.pdf", "idiom" : "universal" }, { @@ -11,7 +11,7 @@ "value" : "dark" } ], - "filename" : "accountLocalPad-dark.pdf", + "filename" : "ipad-dark-slice.pdf", "idiom" : "universal" } ], diff --git a/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/accountLocalPhone-dark.pdf b/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/ipad-any-slice.pdf similarity index 70% rename from iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/accountLocalPhone-dark.pdf rename to iOS/Resources/Assets.xcassets/accountLocalPad.imageset/ipad-any-slice.pdf index f1c59bc0b8baeb798d1eefcda916b4e5476a6820..91665fa1babd48b1bf21bfeb6d4bee47dcd48a6a 100644 GIT binary patch delta 1095 zcmeybFMS0hix%9xe6ey1lz=Y45ETnFAZl1z2(l5=-hov>6<&nUTmR z#<#3IJj&gz^2(B(S0+TRJ+n+>Z>#Q_iypKe!|{H%!4mK|cZ_ zs$gnhp`h39-v9GbhyuXgE-75ZC0X{PO%3=4J}| zKB;->Ky9W5CKDCJCg0@eug?&66#197{mrt7jE>HuF(DrmJiJA=ih6lm^f>5!wOf3p zceyXu%_T=%RzJDm++**a&#IY`AEzC(qJ5FvA4@LLRnIFj*0XwFs@*qpt_xGrZ{6MZ zYu?ZP{_O0Tuv4M@e_9K(`Jm0aB%D%_(VCb-i1kT7TYUSGUP7uB1kPPJUdPooV>4=!;bil{s0TqugGdxe$4@ z=uYEB$v^$9v)SAdR(b|~b#nXR>%XVc*4APlv+<%oXBGa2@zu%vEZe&GV%CxHU!6-& zZgnc?+beRU;YeKd;=i{0lvaN^@W3nYiC}%oybJFbzAJt&T_nw@_Hm-J*d2wm{TrrN z@JhEEbR3poQaiGr@wyyyUHv0Hz9XB01)rA2WyalepS@r~g87^7J0}f!iq+>Fi2n2Y z8%J)5=i4g5t^1-^Bu>1Z8qoJ@ZR)DvzN6lvvs{+Fw=t?=v?6{J`>E)- z6wf_ZEqwWi$vZ{~?o0F-5kx}C0 zcp)7fLj!X|BLhogqbLIdbs*9Nrm*}Jm&B4(1q~M~BLgD?L%5R3+lAiR8JH^=fPg}t z0vDJ8OqE8MVwR=`=;};NO$;VK61IysFtHUoyqNQ; zHTTCB**6F7|0&zc*mOcFfh#pHrMRRhH8B^&%1_GTGE^|wcyH@%aVCRfZ-8KoDP^o>5}xZ0Txd>c*w-mY-MRl3JWxlvz-cU!*Wu zgx8vlD_X(Q%y4rUZ#1J1k*4G%rWY%iD1eP~a>}nzh}JbWGgr_xGc-{!vM@DOFf=l; znEZrKwVq4Y$iz@V-#M|sBQ+D~5(P7$I{o01)Z8!y0|osEsHiDWqrPKVdU$3^Nrr-< zff2ayW3!aUY7cG4;57oh_x4n* zo}IVUWm@j9#Thmg9};?ItWfWLdAGYlQSM2?6#<)yK;?EJ{#hp+*Gn(@43x-y8FXtRz&zQ7rg1OK1e|JNx})?aM{6>nd!{&fwZ-th%W9 z_y(t)d2QEX{&2I-mI}HMIw>XFS?iBn#2nsq=jQtlxV84nZ8}{P*uRh0>fzLkl7*?Q zEBmu|9;{~C>c*0B|4mEyd^howsiq4H>s5_EM4b36H1GDQ;w?t^|9Ug_J!aOnI^(AD zK_TF=9Al0XNAw0+388wvb#s{N&U_a6-&z!O@m%dY!=l*MN%#ME?{l2doB4OjzX|F$ zTjf-q>dg85dv~AK`OCAWT``HS?&scd_O8W=Wzy&3cKJ;^T_|3j(KoO94F}s6DYgk^ zmbQ!QEuVM(=v(_@0$1&_^}W4cTBl8sKP>lA%KD=2%+DT~vAvnC=7FEAH4?oH17_yw z{?6!HHKDS7;+OLu_DX!YGu>o=&7`=C+|Sgfh#fYoOPaU;i0#hR|0h4XduQ|X<(1Cz zEAQuYJmZs^GzYFSc z8W@=ySQ;Aw6S$6$6cW#0=&hYGFk^y%LY@K_m|hT#{H+Qc;we#sxIZ MfJ;@?)!&T^0P}+0BLDyZ diff --git a/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/accountLocalPad-any.pdf b/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/ipad-dark-slice.pdf similarity index 67% rename from iOS/Resources/Assets.xcassets/accountLocalPad.imageset/accountLocalPad-any.pdf rename to iOS/Resources/Assets.xcassets/accountLocalPad.imageset/ipad-dark-slice.pdf index e8b6e0188494ca8cf491a4b7a075002d3ae38ada..9091a096b12d3c87c86c541e2dbf65f4878dc5f0 100644 GIT binary patch delta 1191 zcmcbuF{JkYOgidVFLk|-*X-<_2#<0yK8ChtrnRB8_We* zatabl>OZs@9Ics=$S20PtUNr*-L3MHu zF(DrmJiJA=ih6lm^f>5!wOf3pceyXu%_T=%RzJDm++**a&#IY`AEzC(qJ5FvA4@LL zRnIFj*0XwFs@*qpt_xGrZ{6MZYu?ZP{_O0Tuv4M@e z_9K(`Jm0aB%D%_(VCb-i1kT7TYUSGUP7uB1kPPJUdP zooV>4=!;bil{s0TqugGdxe$4@=uYEB$v^$9v)SAdR(b|~b#nXR>%XVc*4APlv+<%o zXBGa2@zu%vEZe&GV%CxHU!6-&Zgnc?+beRU;YeKd;=i{0lvaN^@W87+?}=c_ybJFb zzAJt&T_nw@_Hm-J*d2wm{TrrN@JhEEbR3poQaiGr@wyyyUHv0Hz9XB01)rA2Wyale zpS@r~g87^7J0}f!iq+>Fi2n2Y8%J)5=i4g5t^1-^Bu>1Z8qoJ@ZR)DvzN6lvvs{+F zw=t?=v?6{J`>E)-6wf_ZEqwW?32F; zI?e`Js^TWCLMQ8w+%O2FB)==wik|doje!4JJ1V3u_sfW5`&V8la1rn3@<& z-Y0AqZ{f5W?^n*WSDAfo|tNCY+{y@l#-lkVaH`dP>Dh;q!dalDyb++ SP2(~#H!$N;Rdw}u;{pI}W6RzE delta 1283 zcmbQPaa&`8L%p$rogG(kNl|KIE>{JkZm%O(vx5N3`%2fRX?(BFxP*U~I?3Gfvr!=6 zgTn9nf+=@)z0~@Z@NB`{u1z8=nY%8AY;rwSS)=YfMb#^bH$cB7YNf9MXXf+AFE0FV zx6Y7~+jn_aw8X!~Rr@~lu0MXehH0_4L^oGzUJBI4)Qv}GakCj)C>UCpPEO&OV(Ofq zTacJsqU)5Cn4BG-Ur=0SXkq{a@#X0mC5FzHu4blgT>5VLc_l8X#mPmP1ts}K3X?^6 zt=YMv6$}lG3^#}IMl<>lX-rOHda;6u0@yq!r~C?qXkBA7a|K;9LlXrf3sX}CLn9N5 z$xrxH>$!A|ObiwDof8W@QZs>0Q7{9l(+@65%?(p9P|%Nnikbp7>N}RDhi9ggWB}b` z2ITrCRzSGM1_nSqAh)|^=A;^N85#k#27$sK7$EscSr7pb!^TEI-zPOMy(Gg>!O{R| zJ{N?iU}|JOQ9*3-1YVx{-oW$O!j2;U%(QoNhFx~)HI-ZQgT=IY&>o9>npFP&s0C1cQklcf909~7w3soeaMK~ z)Uo?RX>H-JD0zQGqvgQ{e{0%_sNxLE3I(1`w_ixu1AXPhQmS6 z<77X`6|aFo81r5Bg7+r3NqeZD@SJJvV#cLiVJ`p3KZ3RqXak=SrM@pJ3W zBk414bSv;ZFqm-VAJ2_v5+6R>`hSeqQM=0aV@~>+JK>uyod5sm^^L6Rv_n4*O_n(< z;D4yK=IH(S{(#QdN!#n1cG@mCXkT8#*W9&bL-2CeT}K}+-7-nydi?{TWlNZJFYiuk z2z$A9+V}do2OM2m{dsTY)GqVQI}BU7YwHgZn~#-V`LJT~N}ulAr;lZ-7%ZG4 z8g=`hOZJvUWj+b>dlp$7dEK$65<;>TntunHyLd8=G2A))A6I;`s|%h#Oj(D}b_tG^o;09+FJ(*OVf diff --git a/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/Contents.json b/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/Contents.json index d8acd1b72..04d21c05f 100644 --- a/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/Contents.json +++ b/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "accountLocalPhone-any.pdf", + "filename" : "iphone-any-slice.pdf", "idiom" : "universal" }, { @@ -11,7 +11,7 @@ "value" : "dark" } ], - "filename" : "accountLocalPhone-dark.pdf", + "filename" : "iphone-dark-slice.pdf", "idiom" : "universal" } ], diff --git a/iOS/Resources/Assets.xcassets/accountLocalPad.imageset/accountLocalPad-dark.pdf b/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/iphone-any-slice.pdf similarity index 67% rename from iOS/Resources/Assets.xcassets/accountLocalPad.imageset/accountLocalPad-dark.pdf rename to iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/iphone-any-slice.pdf index 0ef067fd3f32796126ca0a1dc6a25c18f4ffd85e..f360569705565c9bf6c8918e6f769d8ea2b1b5ff 100644 GIT binary patch delta 1232 zcmaE;v0Y<=eZ8Tff}I^#aY<2XVlGz&qiU}s*C7W1miPM>?Rj}H#Z7(Y*Hu3n4m9vb zh=?d1`D<@+F!=ISk-Y{RA8;HE6x_%EuI9yh-<7&MOP(F|%hFhzCR@35(d#3Qmt(hD zp$WnU+AMg@6ERAM`v|ERsLdp<|iGit=@XQqxOw5{ne{-SYEFTvCgZi!uvJ@{718>+xE%DMW+RZqDb8VKhcnoRgSd ztY8As<>ZuK!4<7*Y-y&TYieeoU}S1xu3%_nVmVoyUsXgw*T}?BLEkyCz#}y?J)?xn z+`x2l0KbT_frWy;V_AB5W=cs0&>CZ)X}*aS5U!EAi6z8vx6GVWBcN#t1`0u3lc)15 z@EHO1`K0Eh19h1i8&6aan|zy}w|5-mG5t*SH`T%Jhy52 zZ*hN5_ib+{6j}18uuR^+^TDD<6Q8Xfm)uUa?4NgMar^V6nWimDtMw2k;r|kVa|`u39Xk8Tz`J&X#LJNAxD1B`+ZCPPqTSvVg9i> z2G@5?e*3~<`r)<`eZo9{3ufDWM&H8jg zidV+@UV7Gr;O~8c_0B??GcOpe-8DaR>a>u(vcHeIzsujQ@_pH zBDHko*K`xt#XF9B@<|$Z@$42ld-2aN@mb3)j|ppeEu4DXEcU;Pw#~G&c1Np!p7VS6 zOtp4_`N7#A;vDupyni&`O`?ow8V`yM*Xk-9PTu}xF>OiCkOmq1u zE{P?n3K}j}Mg~R(hHxd5X9`(~nkpE8fI^-E7nosSY-nUT`Gt@=78wIelgTQ=YV~G@ z=$Z_SEr1Ca%^)LCqDB)lH#EQyGcm>#votkES7%~s4l!@?Nny+QL`wrh3(Hg!lVqUP z#-`?}riMudiD`*OY32q-#%AVrTs8!iD8xcatHh#`ilWpsE)#QO3ocbvSARDy0BSbj AhyVZp delta 1253 zcmdn4@la!eeZ7IDf}I^#aY<2XVlGz&qinAs*I@$zmfw4lE+1`uyF0jKQ#8B%fdYF0 z7NLT~FZCakw#`hH{C233`}1BqnFa=NA-L8JZXXL40|7Mv0-brK_2#8<)OYeqM=7YH@N=W4UaVlE05;CaDZfG?TG!ajTtU~&&_uz=!qim3 z(8$DM@^d~_5iVUL6GH`k=fnb!)J&jD6wJ)bCoAxa7z0)6JC>z~XQq^70PQyea(xpk zAY5Yu19OPsZkai$MqGwQ3I+;63X{|M75EGc6!d*k^U{I3OpVMZZ(vla?+rYkE$k@r z&rEwaXV_(zUQ@X>KOQgGq7s#@yws#u^WNSHBfXn5TsGfLFf+L&XA`l)e6L2=7yS>f zJXZ#EeO(t|@b!_R+?%EB7cZ%tH=pdOy5Nzy&i&u}zCSxVTlT%5X*Aou7A9nuYh&+8;K3K6F;}^Jd!@+Mz;dr1A_@y{_)&+Ch_63t^db( z9kr`$Kjx&Lxf8zW!ukJ?Uf;;7PCNAD&}5mz0{(|uYmVNJ?+@sVowU8KX{YUSgZAY$ ze9c{3HUuwc-F5WQ(k+uDuGc>hTDF8q_ww$vhOn1wr+u%Vd%)49)t~oPPVF+^tP`s= z&R%vdvbO#pvH4i(l@BWxuk`7@efn6YiowD;qEWa1xnyryROXW~zh{xfk=GroetF%m zFx~audwqf5)$c<4_dk2R{+!6;jW>>#CqvX77y5-(rKO4L{ZluHa0@)Wqh3e?#z|v^)FCn#hQ%iJB z2F4Z!=wil3hL~dJ#+VkGm|}hS;o diff --git a/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/accountLocalPhone-any.pdf b/iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/iphone-dark-slice.pdf similarity index 67% rename from iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/accountLocalPhone-any.pdf rename to iOS/Resources/Assets.xcassets/accountLocalPhone.imageset/iphone-dark-slice.pdf index 75768db1d30bea8f6b4b7472495c0efe8f2c907a..cf2247077bfe2d1b003be21638489a93e6049fe0 100644 GIT binary patch delta 1232 zcmeyZu~%b)eZ8T%f}I^#aY<2XVlGz&qiUZw*C7W1m+$i)?Y!LTSw3gxxg1e`fs79f z%}q`%7T?*WW3IBt1xj;Ew;4!l9r}K7F8|}L+G~}Y=e%CB^U8+EwJO0=?kS1I9n9Kr z$TL~xM{M*?i)sIJGvrpC(Uc7PF!f?B*RlCB-`xM4J^T33C*}vtg0e~*w=CyoHBc}# zFqoXcGest#C|@@yHN7+^u}DGREkCcsCAB!YD6^m>zldwHCa*P{LNrM2=1krgMq^aP zIf?1T3MLR;PEPq1T+zD5mSzgNre+2TMy3|#3Wi1|mXihfRihPjjZ6#`^qmt6JW?~$ zGfKG34NMjEgG*9#!xRh@^dlgm3Z@1Y3i^&^>EW3vB^f|lje&;yCRRYWM&>4#5WCzm zb5f0fh6A+*aZR4cufS&n)aR3$mk!irYHU1FL2UAVMxOfKN&Xqajv~kQ-#npq(8I)WV5gI=77Kz?YF%7cdig$y5OFTsMb8D&^L}Y zS|MwcI=0B&>TX|j^o`y9Gv~TO1NSHXeD;0s&(C7Z!b-b39$7hc@ZV?^)ad-2v-04l zsob;F87^vwa!)&-QNKxEvv9%d_M7EX-`twD_iyBRQwt8H0JK3^--krtm&y!}F zwkWOI_u{L~w8`6}B>m?j+lQI@j9Ye{ZGHCo$r_u~=6W8xlU*%G zES5WkNAKttdp6fz=z+z(;-o{LgdXmGn7L26=WItJ_pOFGKQx8_tgtJ3u(^0V6=AE{LHD-LiWo3KI;B1f4j=} zWv9MX7@vAwaAt8qKsbxk(v@G+OT$E! z|1R1#)6Uu*t^Rq=@7*)i+6CqZXMc!u*!S@M(R??F!t{z43E|=8`?g=!i*oMMz0Rrf z<+Q<1e({NuU)dHcTfaZ*rA4ev$*ESY53-!w=TDx@C*;oNWNKh!lsGwBNQcwVz}(Qt z0GPTaPY{wq;%yeP5H~V3R4@Pmg**i=FvGyu(Aab`ldzhYB^D`Qrm_=Ot2Z-8*JWUA zVSz4YY-ETjW^QPPq0Yn@Q_RxT5?!5%sX4^F$&ZDt;(#_Lry8ajB%7rsrni(dV tSem9L8KjvcCM6l#aoHpiQlbzGDXkKVN-By{)3{8`O-#5{RbBnvxB!tY<23*P delta 1326 zcmdn1@mphpeZ7H+f}I^#aY<2XVlGz&qi(MwSF?iv%lmzc_NcO#reD3dSM3Sop+5V(qMT%lys!+R8xw{#b*-FghO3h1wSh?}^Ty9ni1w(Vw$+k_zC1mn#L(H&)y&k5OW!R&uf!#_IJqdZpd`OYVX`c* zH7i%Nf~DE!INlgWA0iFONlY(RFi`-T=H!%Lp%ATWY-X;YYi4MoU}Rxxs$ghjVlnwG zpK3Ihu91nMg1&QNfk$d4&>;$DKy~`TC8@b#3I+=L5l~T6phkVivh?uGl#&buLjyA) z*Eg{O!ZkK90O|p`+$}RF)riZ`2&gqkVRA0N0-vdog1%2`UOG^hsj1~e1+mFz7dn#7X&Rgm-E%(>r44aA%2|Y7b zsQ13S+g+h3_axzpfK5f9a=Q@!tP_swrI>T(=cjFV>yWyi_I>vI-}m->FEg4NWZEwl z)5@P~d0NA%)#CI8L#w)%bB?cPOxiZV+-G`n{nU;74>UdhZdfL|=G2no=MC77zm2)P z|4_{K9?$i5Vl&JAB*N~U{eH6c<)YYi6*gyQaP2czT~vI0gVWBuwreqexLIdQ1ziZ8 zl#=bN^+zsZ4sW`1^Zf_hTKnZToh}OO-^Xk9aB4=$!qnE4{nUB8PJ9-ccl%WF7Nh%ry&3x+GizI&aZ~xA5b#)zF~^A`dV{QlP(9ze zIZSnDK8yTsEeg7LuJ)Z_QEcm^`~SQ5InLyHD%<2qz)#j1iC%^QGxKzRXLPNaP}x55%lQv`CBEF5 zZnD2-Qrt!EXX;bL4x7~_&D(#(cIWEzH2=-}woCuMc@mWR(y(BcKy`sF5|3nHyLd8ycHM85pPo zktQ%j=BKzMmZU0ZxL6q(7#SGCl}s)bvJf}4v`_$LI0J<|1uihdz}V2pXz~#uH8FEc zDFX}hNy2LNrY7i`42;c9(Z!673^2vajm$CBnV4XTSz2P~H8C?W0PCH+RM;xc*eKP) z)X>ngw;t1pv}9_s9SM From 020cd0eb3c3bd3a212a3412cedcdbe059fcb6d24 Mon Sep 17 00:00:00 2001 From: Stuart Breckenridge Date: Mon, 9 Nov 2020 21:41:05 +0800 Subject: [PATCH 2/2] Localises footers --- iOS/Account/Account.storyboard | 7 +++++++ iOS/Account/CloudKitAccountViewController.swift | 10 ++++++++-- iOS/Account/FeedWranglerAccountViewController.swift | 8 +++++++- iOS/Account/FeedbinAccountViewController.swift | 6 ++++++ iOS/Account/LocalAccountViewController.swift | 7 ++++++- iOS/Account/NewsBlurAccountViewController.swift | 7 ++++++- iOS/Account/ReaderAPIAccountViewController.swift | 3 +-- 7 files changed, 41 insertions(+), 7 deletions(-) diff --git a/iOS/Account/Account.storyboard b/iOS/Account/Account.storyboard index f8cf163e5..4c1f22bbc 100644 --- a/iOS/Account/Account.storyboard +++ b/iOS/Account/Account.storyboard @@ -197,6 +197,7 @@ Don't have a Feed Wrangler account? + @@ -317,6 +318,7 @@ Don't have a Feed Wrangler account? + @@ -480,6 +482,7 @@ Don't have a Feedbin account? + @@ -659,6 +662,7 @@ Don't have a NewsBlur account? + @@ -938,6 +942,9 @@ Don't have a Reader account? + + + diff --git a/iOS/Account/CloudKitAccountViewController.swift b/iOS/Account/CloudKitAccountViewController.swift index a72f8203f..1367590db 100644 --- a/iOS/Account/CloudKitAccountViewController.swift +++ b/iOS/Account/CloudKitAccountViewController.swift @@ -12,12 +12,18 @@ import Account class CloudKitAccountViewController: UITableViewController { weak var delegate: AddAccountDismissDelegate? - + @IBOutlet weak var footerLabel: UILabel! + override func viewDidLoad() { super.viewDidLoad() - + setupFooter() + tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader") } + + private func setupFooter() { + footerLabel.text = NSLocalizedString("Use your iCloud account to sync your subscriptions across your iOS and macOS devices.", comment: "iCloud") + } @IBAction func cancel(_ sender: Any) { dismiss(animated: true, completion: nil) diff --git a/iOS/Account/FeedWranglerAccountViewController.swift b/iOS/Account/FeedWranglerAccountViewController.swift index 5f4bc997b..3e71ac7d3 100644 --- a/iOS/Account/FeedWranglerAccountViewController.swift +++ b/iOS/Account/FeedWranglerAccountViewController.swift @@ -20,13 +20,15 @@ class FeedWranglerAccountViewController: UITableViewController { @IBOutlet weak var passwordTextField: UITextField! @IBOutlet weak var showHideButton: UIButton! @IBOutlet weak var actionButton: UIButton! + @IBOutlet weak var footerLabel: UILabel! weak var account: Account? weak var delegate: AddAccountDismissDelegate? override func viewDidLoad() { super.viewDidLoad() - + setupFooter() + activityIndicator.isHidden = true emailTextField.delegate = self passwordTextField.delegate = self @@ -44,6 +46,10 @@ class FeedWranglerAccountViewController: UITableViewController { tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader") } + + private func setupFooter() { + footerLabel.text = NSLocalizedString("Sign in to your Feed Wrangler account and sync your subscriptions across your devices. Your username and password will be encrypted and stored in Keychain.\n\nDon't have a Feed Wrangler account?", comment: "Feed Wrangler") + } override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return section == 0 ? ImageHeaderView.rowHeight : super.tableView(tableView, heightForHeaderInSection: section) diff --git a/iOS/Account/FeedbinAccountViewController.swift b/iOS/Account/FeedbinAccountViewController.swift index 413a2ec79..4dcb85e56 100644 --- a/iOS/Account/FeedbinAccountViewController.swift +++ b/iOS/Account/FeedbinAccountViewController.swift @@ -20,12 +20,14 @@ class FeedbinAccountViewController: UITableViewController { @IBOutlet weak var passwordTextField: UITextField! @IBOutlet weak var showHideButton: UIButton! @IBOutlet weak var actionButton: UIButton! + @IBOutlet weak var footerLabel: UILabel! weak var account: Account? weak var delegate: AddAccountDismissDelegate? override func viewDidLoad() { super.viewDidLoad() + setupFooter() activityIndicator.isHidden = true emailTextField.delegate = self @@ -45,6 +47,10 @@ class FeedbinAccountViewController: UITableViewController { tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader") } + + private func setupFooter() { + footerLabel.text = NSLocalizedString("Sign in to your Feedbin account and sync your subscriptions across your devices. Your username and password will be encrypted and stored in Keychain.\n\nDon't have a Feedbin account?", comment: "Feedbin") + } override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return section == 0 ? ImageHeaderView.rowHeight : super.tableView(tableView, heightForHeaderInSection: section) diff --git a/iOS/Account/LocalAccountViewController.swift b/iOS/Account/LocalAccountViewController.swift index 0bcbe8fa2..d692dc5fa 100644 --- a/iOS/Account/LocalAccountViewController.swift +++ b/iOS/Account/LocalAccountViewController.swift @@ -12,16 +12,21 @@ import Account class LocalAccountViewController: UITableViewController { @IBOutlet weak var nameTextField: UITextField! + @IBOutlet weak var footerLabel: UILabel! weak var delegate: AddAccountDismissDelegate? override func viewDidLoad() { super.viewDidLoad() + setupFooter() navigationItem.title = Account.defaultLocalAccountName nameTextField.delegate = self - tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader") } + + private func setupFooter() { + footerLabel.text = NSLocalizedString("Local accounts do not sync your subscriptions across devices.", comment: "Local") + } @IBAction func cancel(_ sender: Any) { dismiss(animated: true, completion: nil) diff --git a/iOS/Account/NewsBlurAccountViewController.swift b/iOS/Account/NewsBlurAccountViewController.swift index 522b2203e..8b67b496b 100644 --- a/iOS/Account/NewsBlurAccountViewController.swift +++ b/iOS/Account/NewsBlurAccountViewController.swift @@ -20,13 +20,14 @@ class NewsBlurAccountViewController: UITableViewController { @IBOutlet weak var passwordTextField: UITextField! @IBOutlet weak var showHideButton: UIButton! @IBOutlet weak var actionButton: UIButton! + @IBOutlet weak var footerLabel: UILabel! weak var account: Account? weak var delegate: AddAccountDismissDelegate? override func viewDidLoad() { super.viewDidLoad() - + setupFooter() activityIndicator.isHidden = true usernameTextField.delegate = self passwordTextField.delegate = self @@ -45,6 +46,10 @@ class NewsBlurAccountViewController: UITableViewController { tableView.register(ImageHeaderView.self, forHeaderFooterViewReuseIdentifier: "SectionHeader") } + + private func setupFooter() { + footerLabel.text = NSLocalizedString("Sign in to your NewsBlur account and sync your subscriptions across your devices. Your username and password will be encrypted and stored in Keychain.\n\nDon't have a Feedbin account?", comment: "NewsBlur") + } override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { return section == 0 ? ImageHeaderView.rowHeight : super.tableView(tableView, heightForHeaderInSection: section) diff --git a/iOS/Account/ReaderAPIAccountViewController.swift b/iOS/Account/ReaderAPIAccountViewController.swift index 3af06e767..c02733d1d 100644 --- a/iOS/Account/ReaderAPIAccountViewController.swift +++ b/iOS/Account/ReaderAPIAccountViewController.swift @@ -30,6 +30,7 @@ class ReaderAPIAccountViewController: UITableViewController { override func viewDidLoad() { super.viewDidLoad() + setupFooter() activityIndicator.isHidden = true usernameTextField.delegate = self @@ -60,8 +61,6 @@ class ReaderAPIAccountViewController: UITableViewController { } } - setupFooter() - NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: usernameTextField) NotificationCenter.default.addObserver(self, selector: #selector(textDidChange(_:)), name: UITextField.textDidChangeNotification, object: passwordTextField)