From 02932bca93200fd94e2ad97ed0f36dfe0e621886 Mon Sep 17 00:00:00 2001 From: ryanzhao Date: Tue, 19 Oct 2021 11:03:59 +1100 Subject: [PATCH] Appearance based on system theme --- Session/Meta/AppDelegate.m | 39 +++++++++++++----- .../ic_dark_theme_off.imageset/Contents.json | 21 +++------- .../dark-theme-off-24@1x.png | Bin 472 -> 0 bytes .../dark-theme-off-24@2x.png | Bin 994 -> 0 bytes .../dark-theme-off-24@3x.png | Bin 1631 -> 0 bytes .../ic_dark_theme_off.imageset/moon.pdf | Bin 0 -> 4988 bytes .../ic_dark_theme_on.imageset/Contents.json | 21 +++------- .../dark-theme-on-24@1x.png | Bin 390 -> 0 bytes .../dark-theme-on-24@2x.png | Bin 704 -> 0 bytes .../dark-theme-on-24@3x.png | Bin 1048 -> 0 bytes .../ic_dark_theme_on.imageset/moon_fill.pdf | Bin 0 -> 4481 bytes .../ic_theme_auto.imageset/Contents.json | 12 ++++++ .../ic_theme_auto.imageset/moon_auto.pdf | Bin 0 -> 6039 bytes .../Translations/de.lproj/Localizable.strings | 3 ++ .../Translations/en.lproj/Localizable.strings | 3 ++ .../Translations/es.lproj/Localizable.strings | 3 ++ .../Translations/fa.lproj/Localizable.strings | 3 ++ .../Translations/fi.lproj/Localizable.strings | 3 ++ .../Translations/fr.lproj/Localizable.strings | 3 ++ .../Translations/hi.lproj/Localizable.strings | 3 ++ .../Translations/hr.lproj/Localizable.strings | 3 ++ .../id-ID.lproj/Localizable.strings | 3 ++ .../Translations/it.lproj/Localizable.strings | 3 ++ .../Translations/ja.lproj/Localizable.strings | 3 ++ .../Translations/nl.lproj/Localizable.strings | 3 ++ .../Translations/pl.lproj/Localizable.strings | 3 ++ .../pt_BR.lproj/Localizable.strings | 3 ++ .../Translations/ru.lproj/Localizable.strings | 3 ++ .../Translations/si.lproj/Localizable.strings | 3 ++ .../Translations/sk.lproj/Localizable.strings | 3 ++ .../Translations/sv.lproj/Localizable.strings | 3 ++ .../Translations/th.lproj/Localizable.strings | 3 ++ .../vi-VN.lproj/Localizable.strings | 3 ++ .../zh-Hant.lproj/Localizable.strings | 3 ++ .../zh_CN.lproj/Localizable.strings | 3 ++ Session/Settings/SettingsVC.swift | 29 +++++++++++-- Session/Shared/BaseVC.swift | 13 +++++- SessionShareExtension/ShareVC.swift | 4 ++ SessionUIKit/Style Guide/AppMode.swift | 13 ++++++ 39 files changed, 172 insertions(+), 46 deletions(-) delete mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@1x.png delete mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@2x.png delete mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@3x.png create mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/moon.pdf delete mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_on.imageset/dark-theme-on-24@1x.png delete mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_on.imageset/dark-theme-on-24@2x.png delete mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_on.imageset/dark-theme-on-24@3x.png create mode 100644 Session/Meta/Images.xcassets/ic_dark_theme_on.imageset/moon_fill.pdf create mode 100644 Session/Meta/Images.xcassets/ic_theme_auto.imageset/Contents.json create mode 100644 Session/Meta/Images.xcassets/ic_theme_auto.imageset/moon_auto.pdf diff --git a/Session/Meta/AppDelegate.m b/Session/Meta/AppDelegate.m index 29e9e0cda..413f90059 100644 --- a/Session/Meta/AppDelegate.m +++ b/Session/Meta/AppDelegate.m @@ -194,8 +194,8 @@ static NSTimeInterval launchStartedAt; mainWindow.rootViewController = [LoadingViewController new]; [mainWindow makeKeyAndVisible]; - LKAppMode appMode = [self getAppModeOrSystemDefault]; - [self setCurrentAppMode:appMode]; + LKAppMode appMode = [self getCurrentAppMode]; + [self adaptAppMode:appMode]; if (@available(iOS 11, *)) { // This must happen in appDidFinishLaunching or earlier to ensure we don't @@ -246,7 +246,7 @@ static NSTimeInterval launchStartedAt; [self ensureRootViewController]; LKAppMode appMode = [self getCurrentAppMode]; - [self setCurrentAppMode:appMode]; + [self adaptAppMode:appMode]; [AppReadiness runNowOrWhenAppDidBecomeReady:^{ [self handleActivation]; @@ -709,16 +709,10 @@ static NSTimeInterval launchStartedAt; # pragma mark - App Mode -- (LKAppMode)getCurrentAppMode -{ - return [NSUserDefaults.standardUserDefaults integerForKey:@"appMode"]; -} - -- (void)setCurrentAppMode:(LKAppMode)appMode +- (void)adaptAppMode:(LKAppMode)appMode { UIWindow *window = UIApplication.sharedApplication.keyWindow; if (window == nil) { return; } - [NSUserDefaults.standardUserDefaults setInteger:appMode forKey:@"appMode"]; switch (appMode) { case LKAppModeLight: { if (@available(iOS 13.0, *)) { @@ -735,9 +729,34 @@ static NSTimeInterval launchStartedAt; break; } } + if (LKAppModeUtilities.isSystemDefault) { + if (@available(iOS 13.0, *)) { + window.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified; + } + } [NSNotificationCenter.defaultCenter postNotificationName:NSNotification.appModeChanged object:nil]; } +- (LKAppMode)getCurrentAppMode +{ + LKAppMode appMode = [self getAppModeOrSystemDefault]; + UIWindow *window = UIApplication.sharedApplication.keyWindow; + return appMode; +} + +- (void)setCurrentAppMode:(LKAppMode)appMode +{ + [NSUserDefaults.standardUserDefaults setInteger:appMode forKey:@"appMode"]; + [self adaptAppMode:appMode]; +} + +- (void)setAppModeToSystemDefault +{ + [NSUserDefaults.standardUserDefaults removeObjectForKey:@"appMode"]; + LKAppMode appMode = [self getCurrentAppMode]; + [self adaptAppMode:appMode]; +} + # pragma mark - Other - (void)handleDataNukeRequested:(NSNotification *)notification diff --git a/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/Contents.json b/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/Contents.json index b61a86768..4d1bdc517 100644 --- a/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/Contents.json +++ b/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/Contents.json @@ -1,23 +1,12 @@ { "images" : [ { - "idiom" : "universal", - "filename" : "dark-theme-off-24@1x.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "dark-theme-off-24@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "dark-theme-off-24@3x.png", - "scale" : "3x" + "filename" : "moon.pdf", + "idiom" : "universal" } ], "info" : { - "version" : 1, - "author" : "xcode" + "author" : "xcode", + "version" : 1 } -} \ No newline at end of file +} diff --git a/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@1x.png b/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@1x.png deleted file mode 100644 index 78d8d6869d75dfed3d0b35e0ea52343898b84cbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 472 zcmV;}0Vn>6P)Px$l1W5CR7efol)Xv=K@flg3Ze)iXr)LLNu!{Jg+75;X`5FOv=M~VRu-Z@fIh>O zim3$)tt3_aD@5=I{XV#Z+?k7UbA>qYal5lSGq<}lQ!4!d8R+F7`Z^eov$h8xaMfX7 z(9$Ya5AX?7K^{67EwlCv*I z;cI}6c;54;h6e+T#-955dR?BX5IM(7l<{=L{2oR!`k-kOtNo1SB6I6tH=_@lzUDYO zM*jj!L0(&o8jQ0iaCr=F;1nBwm+q^6Q6R zz{tE$>VV-l@w$8yAKvUTg{_kcSn;+Md)GR&?ZT%lB$doCSIjP*TPOZhmIHKcWftut z)M2RYjzVwq}!~SWbXyog>Cgeia|Vy*X5fe?So-T)VuCp zugg~7wRl}8;Qg9i5m+Z?klzT@i|;WFL1K29!q!OxtoSC_yJ}E|e=J`$#Z{LsgF8k5 O0000< diff --git a/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@2x.png b/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@2x.png deleted file mode 100644 index f63cd9b308281a9179da1e84e9995a21adccdf68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 994 zcmV<810DQ{P)Px&oJmAMRA>e5SUGDIQ5cP8Q&2=jP)RIe5R{m7ilR7zT8XG&BbYK^quAJJX+W`f z=sz$njSvM<1OtLg1Vt>wLW1F87mcQHC5w7ad|x;WGkJ3-vpskpoOi#u^DXDjUEghJ zs7w6|BR&@E5oM)Qoh3=_`Q54F_w5eK&}X32|#c zPc1ZHJ4k*N^4gHLqBo!&1V0J+x6mKT^HS)Al~yo&3D|I%fW8U%A$7~47gjEVnUSA{ zexSm1TgZDA(!Mhm*qL>m)IYLp1b@61M7ih5!hT5`w!4pM(|116$b8FaP|{oC z%SNy#G9OOog#?#L7g+-1=YS0*mYfrrPV8IJoC=%LN3_8pO zGWS(-PUysDJZ^S+RPnha_gF$GYk;14Tr(Vj!)J+QF*&UIfYeU0TM>Ll67Pf_SGZ4b zv(p{h8p0l8uW;V+pPdJA>E;H?+m1G%2jHJ8-T)2(k?&%!!PpY{|5DM2}XUoqEWoK!D$5X(9OhDi49L3$C11`gW<>iHPvwN8T9&1pP0Sm@PB;6AT zIVby|asRP=W6(S2-o{k8x#=mD!zrmbp_IR+J#1!8`Ie=A!|LxKoh QEC2ui07*qoM6N<$g1vgmj{pDw diff --git a/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@3x.png b/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/dark-theme-off-24@3x.png deleted file mode 100644 index 10824a121d2798f82d9ef32ee6d50c6832a3e056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1631 zcmV-l2B7(gP)Px*8A(JzRCodHn_Z|?MHI&^D@!XrU>?>lD60o9El}~f$leaV2A34rPw7NY zN8_zv9Q+G@0kwm0f@laF19D8jZqk*fDR^Kr_y+{Xgy*wW_l~C2Xv8tWK@U{fK{sIh z7YWXhlQiurNwcx~00<)`Jb!n*MOF09OpHF_93cmN4)!_zP2?*@ld*OW2qPvue}i{7 z@PYa&c$K0Tu{JoxK9|8?9Vxq_O5Rx-ae$n(VZsS(BITNnm7r^}@+7dMM(JH3?39Ni z+cjvV@+t5d3M+SB|?SmlH5 z%kX}1)_&vi%Fd7Q`iiCd96z;A!&6L((HKly|Ls_%e&WSq&yxuT`aP0P_kBy6R;Pd+ z5#N#b)6F_SOTMkIv|?B(sZ|WR538aE&9*Xe#g0&MX>}a?^UMKh@ zx|~8CJ8ZkXNe#+ecH9}7_IB_+*Y0ofr98AIO|b!tnguMyrjIQT=^Y_4@l-z#IbP|r zE3m*$6Q$GciWS7qxb{Di*YqnDC5@mZ&JyjUb$ghG6vW?h6?MV3((y{29YK3Lg1&6i z8hsZVcQOurfQbOM#EQCVV8uu505epQrg?Tt#g!*RQ2f2}cLFT8Llz1+;9y$|r z9nBSV?*YSL4Ok79fDvFFCOd{e?({SgZAT%!GWVYH5h!QHM*ik}#K)z)2|G9@JoQF2 zlDaY7Vp>X%XFzPkkHVi4Ym^u7N(Ai#!8!K13;zEZxMMb{|96_`r-dcgxD!)Ayjeg& z&N?TgrNkW24H}@+{UGRKp9kRQeb`R4QBG<$lC)3KX0q9D850F(D7=O?n&Qotf1M#` zXOP=*6HT{RObTyK0a9l-Ez3oa_C~s4I0ZtV{<()T9W}a2THRs+F(|7yC`0lZ;*ukI zM?vT#_I!czH0L?06;IkH#gBQ} zXP}YZ+M^(i{BzVh3=}|h)=~`l6X6V_6p9MfJRxVX)4+;2ii!U0Wo9K@{ZGfCs+ow ziWNp_Vnh+0E8s2yI#|x1zyMF}nG|=lb@&y?k%~)tYEwE2J^|l@nraW!9;iJ~d!Y6} d?SVuO{0EiqxVz#IjN$+Q002ovPDHLkV1jbd6P5q~ diff --git a/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/moon.pdf b/Session/Meta/Images.xcassets/ic_dark_theme_off.imageset/moon.pdf new file mode 100644 index 0000000000000000000000000000000000000000..2e49f31443abd9839706231e031065de85472471 GIT binary patch literal 4988 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 diff --git a/Session/Meta/Images.xcassets/ic_dark_theme_on.imageset/dark-theme-on-24@2x.png b/Session/Meta/Images.xcassets/ic_dark_theme_on.imageset/dark-theme-on-24@2x.png deleted file mode 100644 index fbdf614dd3e2a09274d95a02598eeb9bf79d9e0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 704 zcmV;x0zdtUP)Px%dPzhe5SkEg3Q51fN$HD?B$&=74@?)W7LD|z=DF1+xrGLPZg(T%au&}bQ zkQHS?gv8c@UKWb5AxS-aUzvKn?!3A8%-orIHK)GbyqR;({l5Ea?wnLAv7`qg?}47k z83+jsAZ`aZ6vjsuR*RNbfCBIfECUr|yzlY=X+VZ zmxImcZUXwzsP6vWZIhr^ZZ`q*UV%l=r;4s)aajizuK*XQ4u0U*21H`25f}lJW&<`= z@XZyb^rw;*l zh;1@x%Zlr}4*?v71E9tVGtH#8@GD)QrvEoJ+p^+z6o3E>R7Z4Zn91#|jjcgU(aS_0Rva#{=@)(F(1PjVK6%wVuR@}`4QHfwdnN@LL#+RGl zQ>vr`SWsr$ffy6z0SOUF3=7JviU(?(PGPJG7L>X7TQM$d?oKwgSk_`$P)-BZjqeG* z?6^Nmrbubb9`a;?(2d8A4M1`LWCf71ti_7V?JOiph9EBV9MA`_YVClB#utEu^S~)^ m0$c%{Hi;!Yko17C2mSyttX86%_AkN!0000Px&(n&-?RCodHn>%Y3K@^7LH5ybfK?N^hKn-3XXd!BuA0QIEKolDb3kwSivCvvb z`~gA;q!2+6A&nC3yn&Sn-U&)HA~A}_#$dcWFJxdzJ~y-XncY3`GT#?=&dhmoW_EVI z*`}u2Y63NZnm|pU(gd~<{SIFVEX=UuTkt)Io}&dBw&R`a)%3U@O{2f)8>#^TLDq%d zBY`ox!{^FdGX(n3A7sFo@>135Xh=P30LB11Qe{AE3I0h496{2stE6or>Q~5Q%KysF zD$;2q=n)Gzg0``0fV6fRwuB=<%c}EVe21W8zuUxbLOSesi2``T>{?zQa-fCr}&! zHg#^50no1u0SV$6-yvxz*knW8YkuN?kI#@kW(-JRwKno{g{^<=OB6RdqSSjvJI-#) zhTZ1h(eXS?hpTQQCn1FaQU>K^duiw%a&EYV0n$1sPg5p6MBYr?yXkC{xg@P?b$9b( z383uyQV=A;)?(8675B{o0SS`UV&{;v54b%A12V%_y8x$tJY})BeY*+D61|YLz z=ub>$#z8CP=aNCv!3rIOPt6YEsVqZHadf3dCgA7-pJ%73kKgrfNoIBp&ptvieb&1r z&6&}`@iO!nnFf6-^=?V3^A7$RnhrK-lJg0U7Lj@ZCpQx$UovTgzUq8H?xx}9`kXXO zAN8nFsOj$J;u1jbmV|9B=L${hBv%%bdTpXR*XS)9(~4Vb=} z0C|EMqP?X1L%BoMe$oJ%L|H5e#__9+(Hj9?TMNDKLHZ#e>8~YY__%?NA{}uk1H8O SW$82k0000~y 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 LEH18%)&c(yOEl~h literal 0 HcmV?d00001 diff --git a/Session/Meta/Images.xcassets/ic_theme_auto.imageset/Contents.json b/Session/Meta/Images.xcassets/ic_theme_auto.imageset/Contents.json new file mode 100644 index 000000000..3c725dec9 --- /dev/null +++ b/Session/Meta/Images.xcassets/ic_theme_auto.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "moon_auto.pdf", + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Session/Meta/Images.xcassets/ic_theme_auto.imageset/moon_auto.pdf b/Session/Meta/Images.xcassets/ic_theme_auto.imageset/moon_auto.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f2f6aae2e90cc77d4b33f13c9fa5f9768c4821cb GIT binary patch literal 6039 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 AppMode @objc(setCurrentAppMode:) func setCurrentAppMode(to appMode: AppMode) + func setAppModeToSystemDefault() } @objc(LKAppMode) @@ -40,6 +45,10 @@ public enum AppMode : Int { case light, dark } +public var isSystemDefault: Bool { + return !UserDefaults.standard.dictionaryRepresentation().keys.contains("appMode") +} + public var isLightMode: Bool { return AppModeManager.shared.currentAppMode == .light } @@ -49,6 +58,10 @@ public var isDarkMode: Bool { } @objc public final class LKAppModeUtilities : NSObject { + + @objc public static var isSystemDefault: Bool { + return !UserDefaults.standard.dictionaryRepresentation().keys.contains("appMode") + } @objc public static var isLightMode: Bool { return AppModeManager.shared.currentAppMode == .light